From c1d179cbc70773d36c4a9f9b59f3c9dadf4ed850 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lu=C3=ADs=20Alves?= Date: Tue, 12 Sep 2023 13:16:07 +0100 Subject: [PATCH] Add basic coins scene --- .gitignore | 3 + .prettierignore | 3 +- bin/fetch-textures.mjs | 86 ++ package.json | 8 +- public/bundle.js | 13 - public/coins/algeria/596.json | 11 +- public/coins/argentina/2217.json | 13 +- public/coins/argentina/27528.json | 13 +- public/coins/argentina/3256.json | 13 +- public/coins/argentina/89870.json | 14 +- public/coins/australia/1702.json | 17 +- public/coins/australia/1703.json | 21 +- public/coins/austria/57.json | 23 +- public/coins/bahamas/15296.json | 20 +- public/coins/bahamas/5010.json | 12 +- public/coins/bahamas/5012.json | 18 +- public/coins/bahamas/9224.json | 19 +- public/coins/bahamas/941.json | 12 +- public/coins/belgium/56030.json | 23 +- public/coins/belgium/56035.json | 23 +- public/coins/belgium/6298.json | 22 +- public/coins/belgium/73.json | 22 +- public/coins/belgium/74.json | 17 +- public/coins/belgium/75.json | 17 +- public/coins/belgium/79.json | 23 +- public/coins/bolivia/13820.json | 11 +- public/coins/bolivia/18054.json | 11 +- public/coins/bolivia/3223.json | 7 +- public/coins/bolivia/3224.json | 7 +- public/coins/bolivia/3225.json | 7 +- public/coins/bolivia/3228.json | 7 +- public/coins/bolivia/4901.json | 13 +- public/coins/bolivia/4902.json | 11 +- public/coins/brazil/2252.json | 11 +- public/coins/brazil/2253.json | 12 +- public/coins/brazil/666.json | 18 +- public/coins/brazil/8896.json | 13 +- public/coins/bulgaria/2375.json | 22 +- public/coins/bulgaria/2376.json | 22 +- public/coins/bulgaria/28608.json | 24 +- public/coins/bulgaria/28610.json | 24 +- public/coins/bulgaria/28611.json | 23 +- public/coins/bulgaria/5109.json | 21 +- public/coins/canada/32604.json | 25 +- public/coins/canada/377.json | 25 +- public/coins/canada/403.json | 29 +- public/coins/canada/465.json | 30 +- public/coins/chile/2842.json | 12 +- public/coins/china/36732.json | 12 +- public/coins/china/36733.json | 12 +- public/coins/china/36734.json | 12 +- public/coins/china/36735.json | 12 +- public/coins/china/36736.json | 12 +- public/coins/china/36737.json | 12 +- public/coins/china/36738.json | 12 +- public/coins/china/36739.json | 12 +- public/coins/china/36740.json | 12 +- public/coins/china/36741.json | 12 +- public/coins/china/36742.json | 12 +- public/coins/china/36743.json | 12 +- public/coins/colombia/1051.json | 13 +- public/coins/colombia/1073.json | 13 +- public/coins/colombia/2432.json | 11 +- public/coins/colombia/2433.json | 15 +- public/coins/colombia/7524.json | 7 +- public/coins/cyprus/2173.json | 23 +- public/coins/cyprus/2175.json | 23 +- public/coins/cyprus/2178.json | 24 +- public/coins/dominican republic/2504.json | 12 +- public/coins/ecuador/3002.json | 13 +- public/coins/estonia/16588.json | 21 +- public/coins/finland/91.json | 24 +- public/coins/france/100.json | 23 +- public/coins/france/12.json | 21 +- public/coins/france/22652.json | 14 +- public/coins/france/24276.json | 15 +- public/coins/france/3.json | 22 +- public/coins/france/3510.json | 23 +- public/coins/france/4.json | 22 +- public/coins/france/5.json | 22 +- public/coins/france/6373.json | 23 +- public/coins/france/681.json | 21 +- public/coins/france/8.json | 21 +- public/coins/france/9.json | 22 +- public/coins/france/97.json | 21 +- public/coins/france/99.json | 21 +- public/coins/germany/105.json | 21 +- public/coins/germany/107.json | 17 +- public/coins/germany/108.json | 22 +- public/coins/germany/109.json | 17 +- public/coins/germany/6319.json | 17 +- public/coins/germany/844.json | 21 +- public/coins/germany/846.json | 17 +- public/coins/germany/847.json | 18 +- public/coins/germany/850.json | 17 +- public/coins/germany/854.json | 13 +- public/coins/grece/118.json | 24 +- public/coins/greece/115.json | 24 +- public/coins/greece/116.json | 22 +- public/coins/greece/6350.json | 23 +- public/coins/hungary/1998.json | 23 +- public/coins/ireland/121.json | 21 +- public/coins/ireland/125.json | 21 +- public/coins/ireland/6329.json | 21 +- public/coins/italy/129.json | 22 +- public/coins/italy/131.json | 22 +- public/coins/italy/132.json | 21 +- public/coins/italy/133.json | 22 +- public/coins/japan/1589.json | 13 +- public/coins/lebanon/122665.json | 11 +- public/coins/luxembourg/137.json | 22 +- public/coins/luxembourg/139.json | 22 +- public/coins/luxembourg/6418.json | 22 +- public/coins/malta/2183.json | 21 +- public/coins/mexico/587.json | 15 +- public/coins/mexico/589.json | 15 +- public/coins/mexico/591.json | 15 +- public/coins/morocco/27352.json | 11 +- public/coins/morocco/27395.json | 12 +- public/coins/morocco/3818.json | 13 +- public/coins/nepal/5737.json | 15 +- public/coins/netherlands/145.json | 22 +- public/coins/netherlands/147.json | 22 +- public/coins/netherlands/54956.json | 22 +- public/coins/netherlands/734.json | 18 +- public/coins/poland/524.json | 17 +- public/coins/portugal/10288.json | 11 +- public/coins/portugal/11635.json | 20 +- public/coins/portugal/11691.json | 21 +- public/coins/portugal/11695.json | 22 +- public/coins/portugal/1238.json | 22 +- public/coins/portugal/1242.json | 22 +- public/coins/portugal/1243.json | 21 +- public/coins/portugal/13034.json | 20 +- public/coins/portugal/13038.json | 20 +- public/coins/portugal/153.json | 17 +- public/coins/portugal/155.json | 21 +- public/coins/portugal/156.json | 17 +- public/coins/portugal/2047.json | 23 +- public/coins/portugal/2384.json | 17 +- public/coins/portugal/4141.json | 15 +- public/coins/portugal/4729.json | 22 +- public/coins/portugal/5786.json | 11 +- public/coins/portugal/6499.json | 12 +- public/coins/portugal/6500.json | 12 +- public/coins/portugal/7130.json | 19 +- public/coins/portugal/7193.json | 17 +- public/coins/portugal/768.json | 17 +- public/coins/portugal/770.json | 22 +- public/coins/portugal/772.json | 22 +- public/coins/portugal/774.json | 22 +- public/coins/portugal/775.json | 17 +- public/coins/portugal/776.json | 22 +- public/coins/portugal/907.json | 22 +- public/coins/portugal/9826.json | 21 +- public/coins/portugal/9834.json | 22 +- public/coins/portugal/9895.json | 21 +- public/coins/portugal/9896.json | 22 +- public/coins/portugal/991.json | 22 +- public/coins/russia/4580.json | 30 +- public/coins/russia/766.json | 13 +- public/coins/slovakia/5086.json | 22 +- public/coins/south africa/2903.json | 22 +- public/coins/spain/10854.json | 23 +- public/coins/spain/10856.json | 23 +- public/coins/spain/2374.json | 21 +- public/coins/spain/2736.json | 17 +- public/coins/spain/3200.json | 17 +- public/coins/spain/3372.json | 23 +- public/coins/spain/6361.json | 22 +- public/coins/spain/7576.json | 15 +- public/coins/spain/782.json | 17 +- public/coins/spain/787.json | 21 +- public/coins/spain/81.json | 23 +- public/coins/spain/83.json | 23 +- public/coins/spain/84.json | 23 +- public/coins/spain/85.json | 22 +- public/coins/sweden/6926.json | 23 +- public/coins/switzerland/171.json | 22 +- public/coins/switzerland/173.json | 21 +- public/coins/switzerland/178.json | 22 +- public/coins/switzerland/185.json | 23 +- public/coins/switzerland/189.json | 30 +- public/coins/thailand/10004.json | 15 +- public/coins/thailand/1643.json | 14 +- public/coins/thailand/22038.json | 9 +- public/coins/turkey/3044.json | 14 +- public/coins/turkey/6163.json | 14 +- public/coins/turkey/6164.json | 9 +- public/coins/turkey/6165.json | 9 +- public/coins/turkey/7047.json | 9 +- public/coins/turkey/7048.json | 13 +- public/coins/uae/40522.json | 11 +- public/coins/uk/100658.json | 21 +- public/coins/uk/1324.json | 21 +- public/coins/uk/1376.json | 19 +- public/coins/uk/1384.json | 21 +- public/coins/uk/1389.json | 22 +- public/coins/uk/1390.json | 21 +- public/coins/uk/1395.json | 22 +- public/coins/uk/1397.json | 21 +- public/coins/uk/20700.json | 21 +- public/coins/uk/2236.json | 17 +- public/coins/uk/25746.json | 21 +- public/coins/uk/25766.json | 21 +- public/coins/uk/2763.json | 21 +- public/coins/uk/4038.json | 19 +- public/coins/uk/4039.json | 19 +- public/coins/uk/5628.json | 19 +- public/coins/uk/573.json | 19 +- public/coins/uk/6612.json | 21 +- public/coins/uk/664.json | 22 +- public/coins/uk/665.json | 15 +- public/coins/uk/70547.json | 22 +- public/coins/uk/7398.json | 20 +- public/coins/uk/861.json | 19 +- public/coins/uk/862.json | 19 +- public/coins/uk/863.json | 21 +- public/coins/uk/864.json | 21 +- public/coins/uk/865.json | 20 +- public/coins/uk/867.json | 19 +- public/coins/uk/868.json | 20 +- public/coins/uk/875.json | 19 +- public/coins/uk/876.json | 21 +- public/coins/uk/879.json | 22 +- public/coins/usa/42.json | 22 +- public/coins/usa/43.json | 22 +- public/coins/usa/44.json | 22 +- public/coins/usa/53.json | 21 +- public/coins/usa/55.json | 24 +- public/coins/usa/614.json | 24 +- public/coins/usa/648.json | 23 +- public/coins/usa/649.json | 23 +- public/coins/usa/908.json | 21 +- public/vite.svg | 1 - src/App.css | 42 - src/App.tsx | 32 +- src/assets/react.svg | 1 - src/components/scene/coin-instances.tsx | 46 ++ src/components/scene/coin.tsx | 35 + src/components/scene/index.tsx | 90 +++ src/index.css | 66 +- src/main.tsx | 6 +- src/types/coin.ts | 75 ++ yarn.lock | 931 +++++++++++++++++++++- 245 files changed, 2863 insertions(+), 2818 deletions(-) create mode 100644 bin/fetch-textures.mjs delete mode 100644 public/bundle.js delete mode 100644 public/vite.svg delete mode 100644 src/App.css delete mode 100644 src/assets/react.svg create mode 100644 src/components/scene/coin-instances.tsx create mode 100644 src/components/scene/coin.tsx create mode 100644 src/components/scene/index.tsx create mode 100644 src/types/coin.ts diff --git a/.gitignore b/.gitignore index a547bf3..fc2fd53 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ dist-ssr *.njsproj *.sln *.sw? + +# fetchable assets +public/photos \ No newline at end of file diff --git a/.prettierignore b/.prettierignore index c523dda..b512c09 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1 @@ -node_modules -public \ No newline at end of file +node_modules \ No newline at end of file diff --git a/bin/fetch-textures.mjs b/bin/fetch-textures.mjs new file mode 100644 index 0000000..dd4f16e --- /dev/null +++ b/bin/fetch-textures.mjs @@ -0,0 +1,86 @@ +import { readFile, readdir, writeFile } from "fs/promises"; +import process from "process"; +import path from "path"; +import Vibrant from "node-vibrant"; +import { spawn } from "child_process"; + +const baseDir = process.argv[2]; + +const asyncSpawn = (command, args) => { + return new Promise((resolve, reject) => { + const child = spawn(command, args, { + stdio: "inherit", + }); + + child.on("error", reject); + child.stdout?.on("data", process.stdout.write); + child.stderr?.on("data", process.stderr.write); + child.on("close", (code) => { + if (code === 0) { + resolve(code); + } else { + reject(code); + } + }); + }); +}; + +const downloadFile = async (url) => { + const filepath = url.split("catalogue")[1]; + const folder = path.join( + baseDir, + "..", + filepath.split("/").slice(0, -1).join("/"), + ); + await asyncSpawn("mkdir", ["-p", folder]); + const destination = path.join(baseDir, "..", filepath); + await asyncSpawn("curl", [url, "--output", destination]); + return destination; +}; + +const processCoin = async (country, filename) => { + console.log(" ", filename); + const filepath = path.join(baseDir, country, filename); + try { + const coin = JSON.parse(await readFile(filepath, { encoding: "utf-8" })); + + if (coin?.obverse?.picture) { + const destination = await downloadFile(coin.obverse.picture); + coin.obverse.picture = destination.split("public")[1]; + const palette = await Vibrant.from(destination).getPalette(); + coin.color = "rgb(" + palette.Vibrant.rgb.join(",") + ")"; + } + if (coin?.reverse?.picture) { + const destination = await downloadFile(coin.reverse.picture); + coin.reverse.picture = destination.split("public")[1]; + } + if (coin?.edge?.picture) { + const destination = await downloadFile(coin.edge.picture); + coin.edge.picture = destination.split("public")[1]; + } + await writeFile(filepath, JSON.stringify(coin, null, 2)); + } catch (e) { + console.log("\nfailed for", filename, "\n"); + console.error(e); + } +}; + +const processCountry = async (country) => { + console.log(country); + + const coins = (await readdir(path.join(baseDir, country))).filter((file) => + file.endsWith(".json"), + ); + + for (const coin of coins) { + await processCoin(country, coin); + } +}; + +const countries = (await readdir(baseDir, { withFileTypes: true })) + .filter((file) => file.isDirectory()) + .map(({ name }) => name); + +for (const country of countries) { + await processCountry(country); +} diff --git a/package.json b/package.json index 4cdf1a0..ab2e911 100644 --- a/package.json +++ b/package.json @@ -10,22 +10,24 @@ "preview": "vite preview" }, "dependencies": { - "@react-three/fiber": "^8.14.1", + "@react-three/drei": "^9.83.9", + "@react-three/fiber": "^8.13.0", "prettier": "^3.0.3", "react": "^18.2.0", "react-dom": "^18.2.0", - "three": "^0.156.1" + "three": "^0.152.2" }, "devDependencies": { "@types/react": "^18.2.15", "@types/react-dom": "^18.2.7", - "@types/three": "^0.156.0", + "@types/three": "^0.152.0", "@typescript-eslint/eslint-plugin": "^6.0.0", "@typescript-eslint/parser": "^6.0.0", "@vitejs/plugin-react-swc": "^3.3.2", "eslint": "^8.45.0", "eslint-plugin-react-hooks": "^4.6.0", "eslint-plugin-react-refresh": "^0.4.3", + "node-vibrant": "^3.2.1-alpha.1", "typescript": "^5.0.2", "vite": "^4.4.5" } diff --git a/public/bundle.js b/public/bundle.js deleted file mode 100644 index 727895e..0000000 --- a/public/bundle.js +++ /dev/null @@ -1,13 +0,0 @@ -!function(t){var e={};function n(r){if(e[r])return e[r].exports;var i=e[r]={i:r,l:!1,exports:{}};return t[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var i in t)n.d(r,i,function(e){return t[e]}.bind(null,i));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=3)}([function(t,e,n){"use strict";function r(){}n.r(e),n.d(e,"WebGLRenderTargetCube",function(){return ze}),n.d(e,"WebGLRenderTarget",function(){return Be}),n.d(e,"WebGLRenderer",function(){return Pi}),n.d(e,"ShaderLib",function(){return Dn}),n.d(e,"UniformsLib",function(){return On}),n.d(e,"UniformsUtils",function(){return Un}),n.d(e,"ShaderChunk",function(){return Nn}),n.d(e,"FogExp2",function(){return Ci}),n.d(e,"Fog",function(){return Ii}),n.d(e,"Scene",function(){return Oi}),n.d(e,"LensFlare",function(){return Ui}),n.d(e,"Sprite",function(){return Di}),n.d(e,"LOD",function(){return Fi}),n.d(e,"SkinnedMesh",function(){return Gi}),n.d(e,"Skeleton",function(){return Bi}),n.d(e,"Bone",function(){return zi}),n.d(e,"Mesh",function(){return Yr}),n.d(e,"LineSegments",function(){return ji}),n.d(e,"LineLoop",function(){return Vi}),n.d(e,"Line",function(){return ki}),n.d(e,"Points",function(){return Xi}),n.d(e,"Group",function(){return qi}),n.d(e,"VideoTexture",function(){return Yi}),n.d(e,"DataTexture",function(){return je}),n.d(e,"CompressedTexture",function(){return Zi}),n.d(e,"CubeTexture",function(){return Ve}),n.d(e,"CanvasTexture",function(){return Ji}),n.d(e,"DepthTexture",function(){return Ki}),n.d(e,"Texture",function(){return De}),n.d(e,"CompressedTextureLoader",function(){return $o}),n.d(e,"DataTextureLoader",function(){return ta}),n.d(e,"CubeTextureLoader",function(){return na}),n.d(e,"TextureLoader",function(){return ra}),n.d(e,"ObjectLoader",function(){return za}),n.d(e,"MaterialLoader",function(){return Pa}),n.d(e,"BufferGeometryLoader",function(){return Ca}),n.d(e,"DefaultLoadingManager",function(){return Ko}),n.d(e,"LoadingManager",function(){return Jo}),n.d(e,"JSONLoader",function(){return Ba}),n.d(e,"ImageLoader",function(){return ea}),n.d(e,"FontLoader",function(){return os}),n.d(e,"FileLoader",function(){return Qo}),n.d(e,"Loader",function(){return Fa}),n.d(e,"Cache",function(){return Zo}),n.d(e,"AudioLoader",function(){return Ts}),n.d(e,"SpotLightShadow",function(){return sa}),n.d(e,"SpotLight",function(){return ca}),n.d(e,"PointLight",function(){return ua}),n.d(e,"RectAreaLight",function(){return da}),n.d(e,"HemisphereLight",function(){return oa}),n.d(e,"DirectionalLightShadow",function(){return la}),n.d(e,"DirectionalLight",function(){return ha}),n.d(e,"AmbientLight",function(){return fa}),n.d(e,"LightShadow",function(){return aa}),n.d(e,"Light",function(){return ia}),n.d(e,"StereoCamera",function(){return Ss}),n.d(e,"PerspectiveCamera",function(){return pr}),n.d(e,"OrthographicCamera",function(){return dr}),n.d(e,"CubeCamera",function(){return As}),n.d(e,"ArrayCamera",function(){return Si}),n.d(e,"Camera",function(){return fr}),n.d(e,"AudioListener",function(){return Rs}),n.d(e,"PositionalAudio",function(){return Ps}),n.d(e,"AudioContext",function(){return Es}),n.d(e,"AudioAnalyser",function(){return Cs}),n.d(e,"Audio",function(){return Ls}),n.d(e,"VectorKeyframeTrack",function(){return ba}),n.d(e,"StringKeyframeTrack",function(){return Ta}),n.d(e,"QuaternionKeyframeTrack",function(){return Ma}),n.d(e,"NumberKeyframeTrack",function(){return Ea}),n.d(e,"ColorKeyframeTrack",function(){return Aa}),n.d(e,"BooleanKeyframeTrack",function(){return Sa}),n.d(e,"PropertyMixer",function(){return Is}),n.d(e,"PropertyBinding",function(){return Us}),n.d(e,"KeyframeTrack",function(){return Ra}),n.d(e,"AnimationUtils",function(){return ma}),n.d(e,"AnimationObjectGroup",function(){return Ns}),n.d(e,"AnimationMixer",function(){return Fs}),n.d(e,"AnimationClip",function(){return La}),n.d(e,"Uniform",function(){return Bs}),n.d(e,"InstancedBufferGeometry",function(){return zs}),n.d(e,"BufferGeometry",function(){return zr}),n.d(e,"GeometryIdCount",function(){return Tr}),n.d(e,"Geometry",function(){return Sr}),n.d(e,"InterleavedBufferAttribute",function(){return Gs}),n.d(e,"InstancedInterleavedBuffer",function(){return ks}),n.d(e,"InterleavedBuffer",function(){return Hs}),n.d(e,"InstancedBufferAttribute",function(){return js}),n.d(e,"Face3",function(){return mr}),n.d(e,"Object3D",function(){return hr}),n.d(e,"Raycaster",function(){return Vs}),n.d(e,"Layers",function(){return or}),n.d(e,"EventDispatcher",function(){return r}),n.d(e,"Clock",function(){return qs}),n.d(e,"QuaternionLinearInterpolant",function(){return wa}),n.d(e,"LinearInterpolant",function(){return ya}),n.d(e,"DiscreteInterpolant",function(){return xa}),n.d(e,"CubicInterpolant",function(){return va}),n.d(e,"Interpolant",function(){return ga}),n.d(e,"Triangle",function(){return qr}),n.d(e,"Math",function(){return Ae}),n.d(e,"Spherical",function(){return Ys}),n.d(e,"Cylindrical",function(){return Zs}),n.d(e,"Plane",function(){return tr}),n.d(e,"Frustum",function(){return er}),n.d(e,"Sphere",function(){return Qn}),n.d(e,"Ray",function(){return Wr}),n.d(e,"Matrix4",function(){return ke}),n.d(e,"Matrix3",function(){return $n}),n.d(e,"Box3",function(){return Kn}),n.d(e,"Box2",function(){return Fn}),n.d(e,"Line3",function(){return Xr}),n.d(e,"Euler",function(){return ir}),n.d(e,"Vector4",function(){return Fe}),n.d(e,"Vector3",function(){return He}),n.d(e,"Vector2",function(){return Re}),n.d(e,"Quaternion",function(){return Ge}),n.d(e,"Color",function(){return In}),n.d(e,"MorphBlendMesh",function(){return Js}),n.d(e,"ImmediateRenderObject",function(){return Ks}),n.d(e,"VertexNormalsHelper",function(){return Qs}),n.d(e,"SpotLightHelper",function(){return $s}),n.d(e,"SkeletonHelper",function(){return tc}),n.d(e,"PointLightHelper",function(){return ec}),n.d(e,"RectAreaLightHelper",function(){return nc}),n.d(e,"HemisphereLightHelper",function(){return rc}),n.d(e,"GridHelper",function(){return ic}),n.d(e,"PolarGridHelper",function(){return oc}),n.d(e,"FaceNormalsHelper",function(){return ac}),n.d(e,"DirectionalLightHelper",function(){return sc}),n.d(e,"CameraHelper",function(){return cc}),n.d(e,"BoxHelper",function(){return uc}),n.d(e,"ArrowHelper",function(){return lc}),n.d(e,"AxisHelper",function(){return hc}),n.d(e,"CatmullRomCurve3",function(){return vc}),n.d(e,"CubicBezierCurve3",function(){return yc}),n.d(e,"QuadraticBezierCurve3",function(){return xc}),n.d(e,"LineCurve3",function(){return _c}),n.d(e,"ArcCurve",function(){return bc}),n.d(e,"EllipseCurve",function(){return Za}),n.d(e,"SplineCurve",function(){return Ja}),n.d(e,"CubicBezierCurve",function(){return Ka}),n.d(e,"QuadraticBezierCurve",function(){return Qa}),n.d(e,"LineCurve",function(){return qa}),n.d(e,"Shape",function(){return ns}),n.d(e,"Path",function(){return es}),n.d(e,"ShapePath",function(){return rs}),n.d(e,"Font",function(){return is}),n.d(e,"CurvePath",function(){return Ya}),n.d(e,"Curve",function(){return Xa}),n.d(e,"ShapeUtils",function(){return yo}),n.d(e,"SceneUtils",function(){return wc}),n.d(e,"WireframeGeometry",function(){return Qi}),n.d(e,"ParametricGeometry",function(){return $i}),n.d(e,"ParametricBufferGeometry",function(){return to}),n.d(e,"TetrahedronGeometry",function(){return ro}),n.d(e,"TetrahedronBufferGeometry",function(){return io}),n.d(e,"OctahedronGeometry",function(){return oo}),n.d(e,"OctahedronBufferGeometry",function(){return ao}),n.d(e,"IcosahedronGeometry",function(){return so}),n.d(e,"IcosahedronBufferGeometry",function(){return co}),n.d(e,"DodecahedronGeometry",function(){return uo}),n.d(e,"DodecahedronBufferGeometry",function(){return lo}),n.d(e,"PolyhedronGeometry",function(){return eo}),n.d(e,"PolyhedronBufferGeometry",function(){return no}),n.d(e,"TubeGeometry",function(){return ho}),n.d(e,"TubeBufferGeometry",function(){return fo}),n.d(e,"TorusKnotGeometry",function(){return po}),n.d(e,"TorusKnotBufferGeometry",function(){return mo}),n.d(e,"TorusGeometry",function(){return go}),n.d(e,"TorusBufferGeometry",function(){return vo}),n.d(e,"TextGeometry",function(){return bo}),n.d(e,"TextBufferGeometry",function(){return wo}),n.d(e,"SphereGeometry",function(){return Mo}),n.d(e,"SphereBufferGeometry",function(){return Eo}),n.d(e,"RingGeometry",function(){return To}),n.d(e,"RingBufferGeometry",function(){return So}),n.d(e,"PlaneGeometry",function(){return kr}),n.d(e,"PlaneBufferGeometry",function(){return jr}),n.d(e,"LatheGeometry",function(){return Ao}),n.d(e,"LatheBufferGeometry",function(){return Ro}),n.d(e,"ShapeGeometry",function(){return Lo}),n.d(e,"ShapeBufferGeometry",function(){return Po}),n.d(e,"ExtrudeGeometry",function(){return xo}),n.d(e,"ExtrudeBufferGeometry",function(){return _o}),n.d(e,"EdgesGeometry",function(){return Co}),n.d(e,"ConeGeometry",function(){return Uo}),n.d(e,"ConeBufferGeometry",function(){return No}),n.d(e,"CylinderGeometry",function(){return Io}),n.d(e,"CylinderBufferGeometry",function(){return Oo}),n.d(e,"CircleGeometry",function(){return Do}),n.d(e,"CircleBufferGeometry",function(){return Fo}),n.d(e,"BoxGeometry",function(){return Gr}),n.d(e,"BoxBufferGeometry",function(){return Hr}),n.d(e,"ShadowMaterial",function(){return zo}),n.d(e,"SpriteMaterial",function(){return Ni}),n.d(e,"RawShaderMaterial",function(){return Go}),n.d(e,"ShaderMaterial",function(){return Zn}),n.d(e,"PointsMaterial",function(){return Wi}),n.d(e,"MeshPhysicalMaterial",function(){return ko}),n.d(e,"MeshStandardMaterial",function(){return Ho}),n.d(e,"MeshPhongMaterial",function(){return jo}),n.d(e,"MeshToonMaterial",function(){return Vo}),n.d(e,"MeshNormalMaterial",function(){return Wo}),n.d(e,"MeshLambertMaterial",function(){return Xo}),n.d(e,"MeshDepthMaterial",function(){return Jn}),n.d(e,"MeshBasicMaterial",function(){return Vr}),n.d(e,"LineDashedMaterial",function(){return qo}),n.d(e,"LineBasicMaterial",function(){return Hi}),n.d(e,"Material",function(){return Yn}),n.d(e,"Float64BufferAttribute",function(){return Dr}),n.d(e,"Float32BufferAttribute",function(){return Nr}),n.d(e,"Uint32BufferAttribute",function(){return Ur}),n.d(e,"Int32BufferAttribute",function(){return Or}),n.d(e,"Uint16BufferAttribute",function(){return Ir}),n.d(e,"Int16BufferAttribute",function(){return Cr}),n.d(e,"Uint8ClampedBufferAttribute",function(){return Pr}),n.d(e,"Uint8BufferAttribute",function(){return Lr}),n.d(e,"Int8BufferAttribute",function(){return Rr}),n.d(e,"BufferAttribute",function(){return Ar}),n.d(e,"REVISION",function(){return l}),n.d(e,"MOUSE",function(){return h}),n.d(e,"CullFaceNone",function(){return f}),n.d(e,"CullFaceBack",function(){return d}),n.d(e,"CullFaceFront",function(){return p}),n.d(e,"CullFaceFrontBack",function(){return m}),n.d(e,"FrontFaceDirectionCW",function(){return g}),n.d(e,"FrontFaceDirectionCCW",function(){return v}),n.d(e,"BasicShadowMap",function(){return y}),n.d(e,"PCFShadowMap",function(){return x}),n.d(e,"PCFSoftShadowMap",function(){return _}),n.d(e,"FrontSide",function(){return b}),n.d(e,"BackSide",function(){return w}),n.d(e,"DoubleSide",function(){return M}),n.d(e,"FlatShading",function(){return E}),n.d(e,"SmoothShading",function(){return T}),n.d(e,"NoColors",function(){return S}),n.d(e,"FaceColors",function(){return A}),n.d(e,"VertexColors",function(){return R}),n.d(e,"NoBlending",function(){return L}),n.d(e,"NormalBlending",function(){return P}),n.d(e,"AdditiveBlending",function(){return C}),n.d(e,"SubtractiveBlending",function(){return I}),n.d(e,"MultiplyBlending",function(){return O}),n.d(e,"CustomBlending",function(){return U}),n.d(e,"AddEquation",function(){return N}),n.d(e,"SubtractEquation",function(){return D}),n.d(e,"ReverseSubtractEquation",function(){return F}),n.d(e,"MinEquation",function(){return B}),n.d(e,"MaxEquation",function(){return z}),n.d(e,"ZeroFactor",function(){return G}),n.d(e,"OneFactor",function(){return H}),n.d(e,"SrcColorFactor",function(){return k}),n.d(e,"OneMinusSrcColorFactor",function(){return j}),n.d(e,"SrcAlphaFactor",function(){return V}),n.d(e,"OneMinusSrcAlphaFactor",function(){return W}),n.d(e,"DstAlphaFactor",function(){return X}),n.d(e,"OneMinusDstAlphaFactor",function(){return q}),n.d(e,"DstColorFactor",function(){return Y}),n.d(e,"OneMinusDstColorFactor",function(){return Z}),n.d(e,"SrcAlphaSaturateFactor",function(){return J}),n.d(e,"NeverDepth",function(){return K}),n.d(e,"AlwaysDepth",function(){return Q}),n.d(e,"LessDepth",function(){return $}),n.d(e,"LessEqualDepth",function(){return tt}),n.d(e,"EqualDepth",function(){return et}),n.d(e,"GreaterEqualDepth",function(){return nt}),n.d(e,"GreaterDepth",function(){return rt}),n.d(e,"NotEqualDepth",function(){return it}),n.d(e,"MultiplyOperation",function(){return ot}),n.d(e,"MixOperation",function(){return at}),n.d(e,"AddOperation",function(){return st}),n.d(e,"NoToneMapping",function(){return ct}),n.d(e,"LinearToneMapping",function(){return ut}),n.d(e,"ReinhardToneMapping",function(){return lt}),n.d(e,"Uncharted2ToneMapping",function(){return ht}),n.d(e,"CineonToneMapping",function(){return ft}),n.d(e,"UVMapping",function(){return dt}),n.d(e,"CubeReflectionMapping",function(){return pt}),n.d(e,"CubeRefractionMapping",function(){return mt}),n.d(e,"EquirectangularReflectionMapping",function(){return gt}),n.d(e,"EquirectangularRefractionMapping",function(){return vt}),n.d(e,"SphericalReflectionMapping",function(){return yt}),n.d(e,"CubeUVReflectionMapping",function(){return xt}),n.d(e,"CubeUVRefractionMapping",function(){return _t}),n.d(e,"RepeatWrapping",function(){return bt}),n.d(e,"ClampToEdgeWrapping",function(){return wt}),n.d(e,"MirroredRepeatWrapping",function(){return Mt}),n.d(e,"NearestFilter",function(){return Et}),n.d(e,"NearestMipMapNearestFilter",function(){return Tt}),n.d(e,"NearestMipMapLinearFilter",function(){return St}),n.d(e,"LinearFilter",function(){return At}),n.d(e,"LinearMipMapNearestFilter",function(){return Rt}),n.d(e,"LinearMipMapLinearFilter",function(){return Lt}),n.d(e,"UnsignedByteType",function(){return Pt}),n.d(e,"ByteType",function(){return Ct}),n.d(e,"ShortType",function(){return It}),n.d(e,"UnsignedShortType",function(){return Ot}),n.d(e,"IntType",function(){return Ut}),n.d(e,"UnsignedIntType",function(){return Nt}),n.d(e,"FloatType",function(){return Dt}),n.d(e,"HalfFloatType",function(){return Ft}),n.d(e,"UnsignedShort4444Type",function(){return Bt}),n.d(e,"UnsignedShort5551Type",function(){return zt}),n.d(e,"UnsignedShort565Type",function(){return Gt}),n.d(e,"UnsignedInt248Type",function(){return Ht}),n.d(e,"AlphaFormat",function(){return kt}),n.d(e,"RGBFormat",function(){return jt}),n.d(e,"RGBAFormat",function(){return Vt}),n.d(e,"LuminanceFormat",function(){return Wt}),n.d(e,"LuminanceAlphaFormat",function(){return Xt}),n.d(e,"RGBEFormat",function(){return qt}),n.d(e,"DepthFormat",function(){return Yt}),n.d(e,"DepthStencilFormat",function(){return Zt}),n.d(e,"RGB_S3TC_DXT1_Format",function(){return Jt}),n.d(e,"RGBA_S3TC_DXT1_Format",function(){return Kt}),n.d(e,"RGBA_S3TC_DXT3_Format",function(){return Qt}),n.d(e,"RGBA_S3TC_DXT5_Format",function(){return $t}),n.d(e,"RGB_PVRTC_4BPPV1_Format",function(){return te}),n.d(e,"RGB_PVRTC_2BPPV1_Format",function(){return ee}),n.d(e,"RGBA_PVRTC_4BPPV1_Format",function(){return ne}),n.d(e,"RGBA_PVRTC_2BPPV1_Format",function(){return re}),n.d(e,"RGB_ETC1_Format",function(){return ie}),n.d(e,"LoopOnce",function(){return oe}),n.d(e,"LoopRepeat",function(){return ae}),n.d(e,"LoopPingPong",function(){return se}),n.d(e,"InterpolateDiscrete",function(){return ce}),n.d(e,"InterpolateLinear",function(){return ue}),n.d(e,"InterpolateSmooth",function(){return le}),n.d(e,"ZeroCurvatureEnding",function(){return he}),n.d(e,"ZeroSlopeEnding",function(){return fe}),n.d(e,"WrapAroundEnding",function(){return de}),n.d(e,"TrianglesDrawMode",function(){return pe}),n.d(e,"TriangleStripDrawMode",function(){return me}),n.d(e,"TriangleFanDrawMode",function(){return ge}),n.d(e,"LinearEncoding",function(){return ve}),n.d(e,"sRGBEncoding",function(){return ye}),n.d(e,"GammaEncoding",function(){return xe}),n.d(e,"RGBEEncoding",function(){return _e}),n.d(e,"LogLuvEncoding",function(){return be}),n.d(e,"RGBM7Encoding",function(){return we}),n.d(e,"RGBM16Encoding",function(){return Me}),n.d(e,"RGBDEncoding",function(){return Ee}),n.d(e,"BasicDepthPacking",function(){return Te}),n.d(e,"RGBADepthPacking",function(){return Se}),n.d(e,"CubeGeometry",function(){return Gr}),n.d(e,"Face4",function(){return Mc}),n.d(e,"LineStrip",function(){return Ec}),n.d(e,"LinePieces",function(){return Tc}),n.d(e,"MeshFaceMaterial",function(){return Sc}),n.d(e,"MultiMaterial",function(){return Ac}),n.d(e,"PointCloud",function(){return Rc}),n.d(e,"Particle",function(){return Lc}),n.d(e,"ParticleSystem",function(){return Pc}),n.d(e,"PointCloudMaterial",function(){return Cc}),n.d(e,"ParticleBasicMaterial",function(){return Ic}),n.d(e,"ParticleSystemMaterial",function(){return Oc}),n.d(e,"Vertex",function(){return Uc}),n.d(e,"DynamicBufferAttribute",function(){return Nc}),n.d(e,"Int8Attribute",function(){return Dc}),n.d(e,"Uint8Attribute",function(){return Fc}),n.d(e,"Uint8ClampedAttribute",function(){return Bc}),n.d(e,"Int16Attribute",function(){return zc}),n.d(e,"Uint16Attribute",function(){return Gc}),n.d(e,"Int32Attribute",function(){return Hc}),n.d(e,"Uint32Attribute",function(){return kc}),n.d(e,"Float32Attribute",function(){return jc}),n.d(e,"Float64Attribute",function(){return Vc}),n.d(e,"ClosedSplineCurve3",function(){return Wc}),n.d(e,"SplineCurve3",function(){return Xc}),n.d(e,"Spline",function(){return qc}),n.d(e,"BoundingBoxHelper",function(){return Yc}),n.d(e,"EdgesHelper",function(){return Zc}),n.d(e,"WireframeHelper",function(){return Jc}),n.d(e,"XHRLoader",function(){return Kc}),n.d(e,"BinaryTextureLoader",function(){return Qc}),n.d(e,"GeometryUtils",function(){return $c}),n.d(e,"ImageUtils",function(){return tu}),n.d(e,"Projector",function(){return eu}),n.d(e,"CanvasRenderer",function(){return nu}),void 0===Number.EPSILON&&(Number.EPSILON=Math.pow(2,-52)),void 0===Number.isInteger&&(Number.isInteger=function(t){return"number"==typeof t&&isFinite(t)&&Math.floor(t)===t}),void 0===Math.sign&&(Math.sign=function(t){return t<0?-1:t>0?1:+t}),void 0===Function.prototype.name&&Object.defineProperty(Function.prototype,"name",{get:function(){return this.toString().match(/^\s*function\s*([^\(\s]*)/)[1]}}),void 0===Object.assign&&(Object.assign=function(t){if(null==t)throw new TypeError("Cannot convert undefined or null to object");for(var e=Object(t),n=1;n>=4,a[t]=o[19===t?3&i|8:i]);return a.join("")}),clamp:function(t,e,n){return Math.max(e,Math.min(n,t))},euclideanModulo:function(t,e){return(t%e+e)%e},mapLinear:function(t,e,n,r,i){return r+(t-e)*(i-r)/(n-e)},lerp:function(t,e,n){return(1-n)*t+n*e},smoothstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*(3-2*t)},smootherstep:function(t,e,n){return t<=e?0:t>=n?1:(t=(t-e)/(n-e))*t*t*(t*(6*t-15)+10)},randInt:function(t,e){return t+Math.floor(Math.random()*(e-t+1))},randFloat:function(t,e){return t+Math.random()*(e-t)},randFloatSpread:function(t){return t*(.5-Math.random())},degToRad:function(t){return t*Ae.DEG2RAD},radToDeg:function(t){return t*Ae.RAD2DEG},isPowerOfTwo:function(t){return 0==(t&t-1)&&0!==t},nearestPowerOfTwo:function(t){return Math.pow(2,Math.round(Math.log(t)/Math.LN2))},nextPowerOfTwo:function(t){return t--,t|=t>>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,++t}};function Re(t,e){this.x=t||0,this.y=e||0}Object.defineProperties(Re.prototype,{width:{get:function(){return this.x},set:function(t){this.x=t}},height:{get:function(){return this.y},set:function(t){this.y=t}}}),Object.assign(Re.prototype,{isVector2:!0,set:function(t,e){return this.x=t,this.y=e,this},setScalar:function(t){return this.x=t,this.y=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y)},copy:function(t){return this.x=t.x,this.y=t.y,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector2: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this)},addScalar:function(t){return this.x+=t,this.y+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector2: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this)},subScalar:function(t){return this.x-=t,this.y-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this},multiply:function(t){return this.x*=t.x,this.y*=t.y,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this},divide:function(t){return this.x/=t.x,this.y/=t.y,this},divideScalar:function(t){return this.multiplyScalar(1/t)},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this},clampScalar:(c=new Re,u=new Re,function(t,e){return c.set(t,t),u.set(e,e),this.clamp(c,u)}),clampLength:function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this},negate:function(){return this.x=-this.x,this.y=-this.y,this},dot:function(t){return this.x*t.x+this.y*t.y},lengthSq:function(){return this.x*this.x+this.y*this.y},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)},normalize:function(){return this.divideScalar(this.length()||1)},angle:function(){var t=Math.atan2(this.y,this.x);return t<0&&(t+=2*Math.PI),t},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,n=this.y-t.y;return e*e+n*n},distanceToManhattan:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this},lerpVectors:function(t,e,n){return this.subVectors(e,t).multiplyScalar(n).add(t)},equals:function(t){return t.x===this.x&&t.y===this.y},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t},fromBufferAttribute:function(t,e,n){return void 0!==n&&console.warn("THREE.Vector2: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this},rotateAround:function(t,e){var n=Math.cos(e),r=Math.sin(e),i=this.x-t.x,o=this.y-t.y;return this.x=i*n-o*r+t.x,this.y=i*r+o*n+t.y,this}});var Le,Pe,Ce,Ie,Oe,Ue,Ne=0;function De(t,e,n,r,i,o,a,s,c,u){Object.defineProperty(this,"id",{value:Ne++}),this.uuid=Ae.generateUUID(),this.name="",this.image=void 0!==t?t:De.DEFAULT_IMAGE,this.mipmaps=[],this.mapping=void 0!==e?e:De.DEFAULT_MAPPING,this.wrapS=void 0!==n?n:wt,this.wrapT=void 0!==r?r:wt,this.magFilter=void 0!==i?i:At,this.minFilter=void 0!==o?o:Lt,this.anisotropy=void 0!==c?c:1,this.format=void 0!==a?a:Vt,this.type=void 0!==s?s:Pt,this.offset=new Re(0,0),this.repeat=new Re(1,1),this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.encoding=void 0!==u?u:ve,this.version=0,this.onUpdate=null}function Fe(t,e,n,r){this.x=t||0,this.y=e||0,this.z=n||0,this.w=void 0!==r?r:1}function Be(t,e,n){this.uuid=Ae.generateUUID(),this.width=t,this.height=e,this.scissor=new Fe(0,0,t,e),this.scissorTest=!1,this.viewport=new Fe(0,0,t,e),void 0===(n=n||{}).minFilter&&(n.minFilter=At),this.texture=new De(void 0,void 0,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.encoding),this.depthBuffer=void 0===n.depthBuffer||n.depthBuffer,this.stencilBuffer=void 0===n.stencilBuffer||n.stencilBuffer,this.depthTexture=void 0!==n.depthTexture?n.depthTexture:null}function ze(t,e,n){Be.call(this,t,e,n),this.activeCubeFace=0,this.activeMipMapLevel=0}function Ge(t,e,n,r){this._x=t||0,this._y=e||0,this._z=n||0,this._w=void 0!==r?r:1}function He(t,e,n){this.x=t||0,this.y=e||0,this.z=n||0}function ke(){this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix4: the constructor no longer reads arguments. use .set() instead.")}function je(t,e,n,r,i,o,a,s,c,u,l,h){De.call(this,null,o,a,s,c,u,r,i,l,h),this.image={data:t,width:e,height:n},this.magFilter=void 0!==c?c:Et,this.minFilter=void 0!==u?u:Et,this.generateMipmaps=!1,this.flipY=!1,this.unpackAlignment=1}function Ve(t,e,n,r,i,o,a,s,c,u){t=void 0!==t?t:[],e=void 0!==e?e:pt,De.call(this,t,e,n,r,i,o,a,s,c,u),this.flipY=!1}De.DEFAULT_IMAGE=void 0,De.DEFAULT_MAPPING=dt,Object.defineProperty(De.prototype,"needsUpdate",{set:function(t){!0===t&&this.version++}}),Object.assign(De.prototype,r.prototype,{constructor:De,isTexture:!0,clone:function(){return(new this.constructor).copy(this)},copy:function(t){return this.name=t.name,this.image=t.image,this.mipmaps=t.mipmaps.slice(0),this.mapping=t.mapping,this.wrapS=t.wrapS,this.wrapT=t.wrapT,this.magFilter=t.magFilter,this.minFilter=t.minFilter,this.anisotropy=t.anisotropy,this.format=t.format,this.type=t.type,this.offset.copy(t.offset),this.repeat.copy(t.repeat),this.generateMipmaps=t.generateMipmaps,this.premultiplyAlpha=t.premultiplyAlpha,this.flipY=t.flipY,this.unpackAlignment=t.unpackAlignment,this.encoding=t.encoding,this},toJSON:function(t){if(void 0!==t.textures[this.uuid])return t.textures[this.uuid];var e={metadata:{version:4.5,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,mapping:this.mapping,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],wrap:[this.wrapS,this.wrapT],minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY};if(void 0!==this.image){var n=this.image;void 0===n.uuid&&(n.uuid=Ae.generateUUID()),void 0===t.images[n.uuid]&&(t.images[n.uuid]={uuid:n.uuid,url:function(t){var e;return void 0!==t.toDataURL?e=t:((e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas")).width=t.width,e.height=t.height,e.getContext("2d").drawImage(t,0,0,t.width,t.height)),e.width>2048||e.height>2048?e.toDataURL("image/jpeg",.6):e.toDataURL("image/png")}(n)}),e.image=n.uuid}return t.textures[this.uuid]=e,e},dispose:function(){this.dispatchEvent({type:"dispose"})},transformUv:function(t){if(this.mapping===dt){if(t.multiply(this.repeat),t.add(this.offset),t.x<0||t.x>1)switch(this.wrapS){case bt:t.x=t.x-Math.floor(t.x);break;case wt:t.x=t.x<0?0:1;break;case Mt:1===Math.abs(Math.floor(t.x)%2)?t.x=Math.ceil(t.x)-t.x:t.x=t.x-Math.floor(t.x)}if(t.y<0||t.y>1)switch(this.wrapT){case bt:t.y=t.y-Math.floor(t.y);break;case wt:t.y=t.y<0?0:1;break;case Mt:1===Math.abs(Math.floor(t.y)%2)?t.y=Math.ceil(t.y)-t.y:t.y=t.y-Math.floor(t.y)}this.flipY&&(t.y=1-t.y)}}}),Object.assign(Fe.prototype,{isVector4:!0,set:function(t,e,n,r){return this.x=t,this.y=e,this.z=n,this.w=r,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this.w=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setW:function(t){return this.w=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;case 3:this.w=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z,this.w)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this.w=void 0!==t.w?t.w:1,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector4: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this.w+=t.w,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this.w+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this.w=t.w+e.w,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this.w+=t.w*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector4: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this.w-=t.w,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this.w-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this.w=t.w-e.w,this},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this.w*=t,this},applyMatrix4:function(t){var e=this.x,n=this.y,r=this.z,i=this.w,o=t.elements;return this.x=o[0]*e+o[4]*n+o[8]*r+o[12]*i,this.y=o[1]*e+o[5]*n+o[9]*r+o[13]*i,this.z=o[2]*e+o[6]*n+o[10]*r+o[14]*i,this.w=o[3]*e+o[7]*n+o[11]*r+o[15]*i,this},divideScalar:function(t){return this.multiplyScalar(1/t)},setAxisAngleFromQuaternion:function(t){this.w=2*Math.acos(t.w);var e=Math.sqrt(1-t.w*t.w);return e<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=t.x/e,this.y=t.y/e,this.z=t.z/e),this},setAxisAngleFromRotationMatrix:function(t){var e,n,r,i,o=t.elements,a=o[0],s=o[4],c=o[8],u=o[1],l=o[5],h=o[9],f=o[2],d=o[6],p=o[10];if(Math.abs(s-u)<.01&&Math.abs(c-f)<.01&&Math.abs(h-d)<.01){if(Math.abs(s+u)<.1&&Math.abs(c+f)<.1&&Math.abs(h+d)<.1&&Math.abs(a+l+p-3)<.1)return this.set(1,0,0,0),this;e=Math.PI;var m=(a+1)/2,g=(l+1)/2,v=(p+1)/2,y=(s+u)/4,x=(c+f)/4,_=(h+d)/4;return m>g&&m>v?m<.01?(n=0,r=.707106781,i=.707106781):(r=y/(n=Math.sqrt(m)),i=x/n):g>v?g<.01?(n=.707106781,r=0,i=.707106781):(n=y/(r=Math.sqrt(g)),i=_/r):v<.01?(n=.707106781,r=.707106781,i=0):(n=x/(i=Math.sqrt(v)),r=_/i),this.set(n,r,i,e),this}var b=Math.sqrt((d-h)*(d-h)+(c-f)*(c-f)+(u-s)*(u-s));return Math.abs(b)<.001&&(b=1),this.x=(d-h)/b,this.y=(c-f)/b,this.z=(u-s)/b,this.w=Math.acos((a+l+p-1)/2),this},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this.w=Math.min(this.w,t.w),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this.w=Math.max(this.w,t.w),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this.w=Math.max(t.w,Math.min(e.w,this.w)),this},clampScalar:function(){var t,e;return function(n,r){return void 0===t&&(t=new Fe,e=new Fe),t.set(n,n,n,n),e.set(r,r,r,r),this.clamp(t,e)}}(),clampLength:function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this.w=this.w<0?Math.ceil(this.w):Math.floor(this.w),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z+this.w*t.w},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this.w+=(t.w-this.w)*e,this},lerpVectors:function(t,e,n){return this.subVectors(e,t).multiplyScalar(n).add(t)},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z&&t.w===this.w},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this.w=t[e+3],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t[e+3]=this.w,t},fromBufferAttribute:function(t,e,n){return void 0!==n&&console.warn("THREE.Vector4: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this.w=t.getW(e),this}}),Object.assign(Be.prototype,r.prototype,{isWebGLRenderTarget:!0,setSize:function(t,e){this.width===t&&this.height===e||(this.width=t,this.height=e,this.dispose()),this.viewport.set(0,0,t,e),this.scissor.set(0,0,t,e)},clone:function(){return(new this.constructor).copy(this)},copy:function(t){return this.width=t.width,this.height=t.height,this.viewport.copy(t.viewport),this.texture=t.texture.clone(),this.depthBuffer=t.depthBuffer,this.stencilBuffer=t.stencilBuffer,this.depthTexture=t.depthTexture,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),ze.prototype=Object.create(Be.prototype),ze.prototype.constructor=ze,ze.prototype.isWebGLRenderTargetCube=!0,Object.assign(Ge,{slerp:function(t,e,n,r){return n.copy(t).slerp(e,r)},slerpFlat:function(t,e,n,r,i,o,a){var s=n[r+0],c=n[r+1],u=n[r+2],l=n[r+3],h=i[o+0],f=i[o+1],d=i[o+2],p=i[o+3];if(l!==p||s!==h||c!==f||u!==d){var m=1-a,g=s*h+c*f+u*d+l*p,v=g>=0?1:-1,y=1-g*g;if(y>Number.EPSILON){var x=Math.sqrt(y),_=Math.atan2(x,g*v);m=Math.sin(m*_)/x,a=Math.sin(a*_)/x}var b=a*v;if(s=s*m+h*b,c=c*m+f*b,u=u*m+d*b,l=l*m+p*b,m===1-a){var w=1/Math.sqrt(s*s+c*c+u*u+l*l);s*=w,c*=w,u*=w,l*=w}}t[e]=s,t[e+1]=c,t[e+2]=u,t[e+3]=l}}),Object.defineProperties(Ge.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this.onChangeCallback()}},w:{get:function(){return this._w},set:function(t){this._w=t,this.onChangeCallback()}}}),Object.assign(Ge.prototype,{set:function(t,e,n,r){return this._x=t,this._y=e,this._z=n,this._w=r,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._w)},copy:function(t){return this._x=t.x,this._y=t.y,this._z=t.z,this._w=t.w,this.onChangeCallback(),this},setFromEuler:function(t,e){if(!t||!t.isEuler)throw new Error("THREE.Quaternion: .setFromEuler() now expects an Euler rotation rather than a Vector3 and order.");var n=t._x,r=t._y,i=t._z,o=t.order,a=Math.cos,s=Math.sin,c=a(n/2),u=a(r/2),l=a(i/2),h=s(n/2),f=s(r/2),d=s(i/2);return"XYZ"===o?(this._x=h*u*l+c*f*d,this._y=c*f*l-h*u*d,this._z=c*u*d+h*f*l,this._w=c*u*l-h*f*d):"YXZ"===o?(this._x=h*u*l+c*f*d,this._y=c*f*l-h*u*d,this._z=c*u*d-h*f*l,this._w=c*u*l+h*f*d):"ZXY"===o?(this._x=h*u*l-c*f*d,this._y=c*f*l+h*u*d,this._z=c*u*d+h*f*l,this._w=c*u*l-h*f*d):"ZYX"===o?(this._x=h*u*l-c*f*d,this._y=c*f*l+h*u*d,this._z=c*u*d-h*f*l,this._w=c*u*l+h*f*d):"YZX"===o?(this._x=h*u*l+c*f*d,this._y=c*f*l+h*u*d,this._z=c*u*d-h*f*l,this._w=c*u*l-h*f*d):"XZY"===o&&(this._x=h*u*l-c*f*d,this._y=c*f*l-h*u*d,this._z=c*u*d+h*f*l,this._w=c*u*l+h*f*d),!1!==e&&this.onChangeCallback(),this},setFromAxisAngle:function(t,e){var n=e/2,r=Math.sin(n);return this._x=t.x*r,this._y=t.y*r,this._z=t.z*r,this._w=Math.cos(n),this.onChangeCallback(),this},setFromRotationMatrix:function(t){var e,n=t.elements,r=n[0],i=n[4],o=n[8],a=n[1],s=n[5],c=n[9],u=n[2],l=n[6],h=n[10],f=r+s+h;return f>0?(e=.5/Math.sqrt(f+1),this._w=.25/e,this._x=(l-c)*e,this._y=(o-u)*e,this._z=(a-i)*e):r>s&&r>h?(e=2*Math.sqrt(1+r-s-h),this._w=(l-c)/e,this._x=.25*e,this._y=(i+a)/e,this._z=(o+u)/e):s>h?(e=2*Math.sqrt(1+s-r-h),this._w=(o-u)/e,this._x=(i+a)/e,this._y=.25*e,this._z=(c+l)/e):(e=2*Math.sqrt(1+h-r-s),this._w=(a-i)/e,this._x=(o+u)/e,this._y=(c+l)/e,this._z=.25*e),this.onChangeCallback(),this},setFromUnitVectors:function(){var t,e=new He;return function(n,r){return void 0===e&&(e=new He),(t=n.dot(r)+1)<1e-6?(t=0,Math.abs(n.x)>Math.abs(n.z)?e.set(-n.y,n.x,0):e.set(0,-n.z,n.y)):e.crossVectors(n,r),this._x=e.x,this._y=e.y,this._z=e.z,this._w=t,this.normalize()}}(),inverse:function(){return this.conjugate().normalize()},conjugate:function(){return this._x*=-1,this._y*=-1,this._z*=-1,this.onChangeCallback(),this},dot:function(t){return this._x*t._x+this._y*t._y+this._z*t._z+this._w*t._w},lengthSq:function(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w},length:function(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)},normalize:function(){var t=this.length();return 0===t?(this._x=0,this._y=0,this._z=0,this._w=1):(t=1/t,this._x=this._x*t,this._y=this._y*t,this._z=this._z*t,this._w=this._w*t),this.onChangeCallback(),this},multiply:function(t,e){return void 0!==e?(console.warn("THREE.Quaternion: .multiply() now only accepts one argument. Use .multiplyQuaternions( a, b ) instead."),this.multiplyQuaternions(t,e)):this.multiplyQuaternions(this,t)},premultiply:function(t){return this.multiplyQuaternions(t,this)},multiplyQuaternions:function(t,e){var n=t._x,r=t._y,i=t._z,o=t._w,a=e._x,s=e._y,c=e._z,u=e._w;return this._x=n*u+o*a+r*c-i*s,this._y=r*u+o*s+i*a-n*c,this._z=i*u+o*c+n*s-r*a,this._w=o*u-n*a-r*s-i*c,this.onChangeCallback(),this},slerp:function(t,e){if(0===e)return this;if(1===e)return this.copy(t);var n=this._x,r=this._y,i=this._z,o=this._w,a=o*t._w+n*t._x+r*t._y+i*t._z;if(a<0?(this._w=-t._w,this._x=-t._x,this._y=-t._y,this._z=-t._z,a=-a):this.copy(t),a>=1)return this._w=o,this._x=n,this._y=r,this._z=i,this;var s=Math.sqrt(1-a*a);if(Math.abs(s)<.001)return this._w=.5*(o+this._w),this._x=.5*(n+this._x),this._y=.5*(r+this._y),this._z=.5*(i+this._z),this;var c=Math.atan2(s,a),u=Math.sin((1-e)*c)/s,l=Math.sin(e*c)/s;return this._w=o*u+this._w*l,this._x=n*u+this._x*l,this._y=r*u+this._y*l,this._z=i*u+this._z*l,this.onChangeCallback(),this},equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._w===this._w},fromArray:function(t,e){return void 0===e&&(e=0),this._x=t[e],this._y=t[e+1],this._z=t[e+2],this._w=t[e+3],this.onChangeCallback(),this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._w,t},onChange:function(t){return this.onChangeCallback=t,this},onChangeCallback:function(){}}),Object.assign(He.prototype,{isVector3:!0,set:function(t,e,n){return this.x=t,this.y=e,this.z=n,this},setScalar:function(t){return this.x=t,this.y=t,this.z=t,this},setX:function(t){return this.x=t,this},setY:function(t){return this.y=t,this},setZ:function(t){return this.z=t,this},setComponent:function(t,e){switch(t){case 0:this.x=e;break;case 1:this.y=e;break;case 2:this.z=e;break;default:throw new Error("index is out of range: "+t)}return this},getComponent:function(t){switch(t){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw new Error("index is out of range: "+t)}},clone:function(){return new this.constructor(this.x,this.y,this.z)},copy:function(t){return this.x=t.x,this.y=t.y,this.z=t.z,this},add:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .add() now only accepts one argument. Use .addVectors( a, b ) instead."),this.addVectors(t,e)):(this.x+=t.x,this.y+=t.y,this.z+=t.z,this)},addScalar:function(t){return this.x+=t,this.y+=t,this.z+=t,this},addVectors:function(t,e){return this.x=t.x+e.x,this.y=t.y+e.y,this.z=t.z+e.z,this},addScaledVector:function(t,e){return this.x+=t.x*e,this.y+=t.y*e,this.z+=t.z*e,this},sub:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .sub() now only accepts one argument. Use .subVectors( a, b ) instead."),this.subVectors(t,e)):(this.x-=t.x,this.y-=t.y,this.z-=t.z,this)},subScalar:function(t){return this.x-=t,this.y-=t,this.z-=t,this},subVectors:function(t,e){return this.x=t.x-e.x,this.y=t.y-e.y,this.z=t.z-e.z,this},multiply:function(t,e){return void 0!==e?(console.warn("THREE.Vector3: .multiply() now only accepts one argument. Use .multiplyVectors( a, b ) instead."),this.multiplyVectors(t,e)):(this.x*=t.x,this.y*=t.y,this.z*=t.z,this)},multiplyScalar:function(t){return this.x*=t,this.y*=t,this.z*=t,this},multiplyVectors:function(t,e){return this.x=t.x*e.x,this.y=t.y*e.y,this.z=t.z*e.z,this},applyEuler:(Ce=new Ge,function(t){return t&&t.isEuler||console.error("THREE.Vector3: .applyEuler() now expects an Euler rotation rather than a Vector3 and order."),this.applyQuaternion(Ce.setFromEuler(t))}),applyAxisAngle:function(){var t=new Ge;return function(e,n){return this.applyQuaternion(t.setFromAxisAngle(e,n))}}(),applyMatrix3:function(t){var e=this.x,n=this.y,r=this.z,i=t.elements;return this.x=i[0]*e+i[3]*n+i[6]*r,this.y=i[1]*e+i[4]*n+i[7]*r,this.z=i[2]*e+i[5]*n+i[8]*r,this},applyMatrix4:function(t){var e=this.x,n=this.y,r=this.z,i=t.elements,o=1/(i[3]*e+i[7]*n+i[11]*r+i[15]);return this.x=(i[0]*e+i[4]*n+i[8]*r+i[12])*o,this.y=(i[1]*e+i[5]*n+i[9]*r+i[13])*o,this.z=(i[2]*e+i[6]*n+i[10]*r+i[14])*o,this},applyQuaternion:function(t){var e=this.x,n=this.y,r=this.z,i=t.x,o=t.y,a=t.z,s=t.w,c=s*e+o*r-a*n,u=s*n+a*e-i*r,l=s*r+i*n-o*e,h=-i*e-o*n-a*r;return this.x=c*s+h*-i+u*-a-l*-o,this.y=u*s+h*-o+l*-i-c*-a,this.z=l*s+h*-a+c*-o-u*-i,this},project:(Pe=new ke,function(t){return Pe.multiplyMatrices(t.projectionMatrix,Pe.getInverse(t.matrixWorld)),this.applyMatrix4(Pe)}),unproject:function(){var t=new ke;return function(e){return t.multiplyMatrices(e.matrixWorld,t.getInverse(e.projectionMatrix)),this.applyMatrix4(t)}}(),transformDirection:function(t){var e=this.x,n=this.y,r=this.z,i=t.elements;return this.x=i[0]*e+i[4]*n+i[8]*r,this.y=i[1]*e+i[5]*n+i[9]*r,this.z=i[2]*e+i[6]*n+i[10]*r,this.normalize()},divide:function(t){return this.x/=t.x,this.y/=t.y,this.z/=t.z,this},divideScalar:function(t){return this.multiplyScalar(1/t)},min:function(t){return this.x=Math.min(this.x,t.x),this.y=Math.min(this.y,t.y),this.z=Math.min(this.z,t.z),this},max:function(t){return this.x=Math.max(this.x,t.x),this.y=Math.max(this.y,t.y),this.z=Math.max(this.z,t.z),this},clamp:function(t,e){return this.x=Math.max(t.x,Math.min(e.x,this.x)),this.y=Math.max(t.y,Math.min(e.y,this.y)),this.z=Math.max(t.z,Math.min(e.z,this.z)),this},clampScalar:function(){var t=new He,e=new He;return function(n,r){return t.set(n,n,n),e.set(r,r,r),this.clamp(t,e)}}(),clampLength:function(t,e){var n=this.length();return this.divideScalar(n||1).multiplyScalar(Math.max(t,Math.min(e,n)))},floor:function(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this},ceil:function(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this},round:function(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this},roundToZero:function(){return this.x=this.x<0?Math.ceil(this.x):Math.floor(this.x),this.y=this.y<0?Math.ceil(this.y):Math.floor(this.y),this.z=this.z<0?Math.ceil(this.z):Math.floor(this.z),this},negate:function(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this},dot:function(t){return this.x*t.x+this.y*t.y+this.z*t.z},lengthSq:function(){return this.x*this.x+this.y*this.y+this.z*this.z},length:function(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)},lengthManhattan:function(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)},normalize:function(){return this.divideScalar(this.length()||1)},setLength:function(t){return this.normalize().multiplyScalar(t)},lerp:function(t,e){return this.x+=(t.x-this.x)*e,this.y+=(t.y-this.y)*e,this.z+=(t.z-this.z)*e,this},lerpVectors:function(t,e,n){return this.subVectors(e,t).multiplyScalar(n).add(t)},cross:function(t,e){if(void 0!==e)return console.warn("THREE.Vector3: .cross() now only accepts one argument. Use .crossVectors( a, b ) instead."),this.crossVectors(t,e);var n=this.x,r=this.y,i=this.z;return this.x=r*t.z-i*t.y,this.y=i*t.x-n*t.z,this.z=n*t.y-r*t.x,this},crossVectors:function(t,e){var n=t.x,r=t.y,i=t.z,o=e.x,a=e.y,s=e.z;return this.x=r*s-i*a,this.y=i*o-n*s,this.z=n*a-r*o,this},projectOnVector:function(t){var e=t.dot(this)/t.lengthSq();return this.copy(t).multiplyScalar(e)},projectOnPlane:(Le=new He,function(t){return Le.copy(this).projectOnVector(t),this.sub(Le)}),reflect:function(){var t=new He;return function(e){return this.sub(t.copy(e).multiplyScalar(2*this.dot(e)))}}(),angleTo:function(t){var e=this.dot(t)/Math.sqrt(this.lengthSq()*t.lengthSq());return Math.acos(Ae.clamp(e,-1,1))},distanceTo:function(t){return Math.sqrt(this.distanceToSquared(t))},distanceToSquared:function(t){var e=this.x-t.x,n=this.y-t.y,r=this.z-t.z;return e*e+n*n+r*r},distanceToManhattan:function(t){return Math.abs(this.x-t.x)+Math.abs(this.y-t.y)+Math.abs(this.z-t.z)},setFromSpherical:function(t){var e=Math.sin(t.phi)*t.radius;return this.x=e*Math.sin(t.theta),this.y=Math.cos(t.phi)*t.radius,this.z=e*Math.cos(t.theta),this},setFromCylindrical:function(t){return this.x=t.radius*Math.sin(t.theta),this.y=t.y,this.z=t.radius*Math.cos(t.theta),this},setFromMatrixPosition:function(t){var e=t.elements;return this.x=e[12],this.y=e[13],this.z=e[14],this},setFromMatrixScale:function(t){var e=this.setFromMatrixColumn(t,0).length(),n=this.setFromMatrixColumn(t,1).length(),r=this.setFromMatrixColumn(t,2).length();return this.x=e,this.y=n,this.z=r,this},setFromMatrixColumn:function(t,e){return this.fromArray(t.elements,4*e)},equals:function(t){return t.x===this.x&&t.y===this.y&&t.z===this.z},fromArray:function(t,e){return void 0===e&&(e=0),this.x=t[e],this.y=t[e+1],this.z=t[e+2],this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this.x,t[e+1]=this.y,t[e+2]=this.z,t},fromBufferAttribute:function(t,e,n){return void 0!==n&&console.warn("THREE.Vector3: offset has been removed from .fromBufferAttribute()."),this.x=t.getX(e),this.y=t.getY(e),this.z=t.getZ(e),this}}),Object.assign(ke.prototype,{isMatrix4:!0,set:function(t,e,n,r,i,o,a,s,c,u,l,h,f,d,p,m){var g=this.elements;return g[0]=t,g[4]=e,g[8]=n,g[12]=r,g[1]=i,g[5]=o,g[9]=a,g[13]=s,g[2]=c,g[6]=u,g[10]=l,g[14]=h,g[3]=f,g[7]=d,g[11]=p,g[15]=m,this},identity:function(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this},clone:function(){return(new ke).fromArray(this.elements)},copy:function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],e[9]=n[9],e[10]=n[10],e[11]=n[11],e[12]=n[12],e[13]=n[13],e[14]=n[14],e[15]=n[15],this},copyPosition:function(t){var e=this.elements,n=t.elements;return e[12]=n[12],e[13]=n[13],e[14]=n[14],this},extractBasis:function(t,e,n){return t.setFromMatrixColumn(this,0),e.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this},makeBasis:function(t,e,n){return this.set(t.x,e.x,n.x,0,t.y,e.y,n.y,0,t.z,e.z,n.z,0,0,0,0,1),this},extractRotation:function(){var t=new He;return function(e){var n=this.elements,r=e.elements,i=1/t.setFromMatrixColumn(e,0).length(),o=1/t.setFromMatrixColumn(e,1).length(),a=1/t.setFromMatrixColumn(e,2).length();return n[0]=r[0]*i,n[1]=r[1]*i,n[2]=r[2]*i,n[4]=r[4]*o,n[5]=r[5]*o,n[6]=r[6]*o,n[8]=r[8]*a,n[9]=r[9]*a,n[10]=r[10]*a,this}}(),makeRotationFromEuler:function(t){t&&t.isEuler||console.error("THREE.Matrix: .makeRotationFromEuler() now expects a Euler rotation rather than a Vector3 and order.");var e=this.elements,n=t.x,r=t.y,i=t.z,o=Math.cos(n),a=Math.sin(n),s=Math.cos(r),c=Math.sin(r),u=Math.cos(i),l=Math.sin(i);if("XYZ"===t.order){var h=o*u,f=o*l,d=a*u,p=a*l;e[0]=s*u,e[4]=-s*l,e[8]=c,e[1]=f+d*c,e[5]=h-p*c,e[9]=-a*s,e[2]=p-h*c,e[6]=d+f*c,e[10]=o*s}else if("YXZ"===t.order){var m=s*u,g=s*l,v=c*u,y=c*l;e[0]=m+y*a,e[4]=v*a-g,e[8]=o*c,e[1]=o*l,e[5]=o*u,e[9]=-a,e[2]=g*a-v,e[6]=y+m*a,e[10]=o*s}else if("ZXY"===t.order){m=s*u,g=s*l,v=c*u,y=c*l;e[0]=m-y*a,e[4]=-o*l,e[8]=v+g*a,e[1]=g+v*a,e[5]=o*u,e[9]=y-m*a,e[2]=-o*c,e[6]=a,e[10]=o*s}else if("ZYX"===t.order){h=o*u,f=o*l,d=a*u,p=a*l;e[0]=s*u,e[4]=d*c-f,e[8]=h*c+p,e[1]=s*l,e[5]=p*c+h,e[9]=f*c-d,e[2]=-c,e[6]=a*s,e[10]=o*s}else if("YZX"===t.order){var x=o*s,_=o*c,b=a*s,w=a*c;e[0]=s*u,e[4]=w-x*l,e[8]=b*l+_,e[1]=l,e[5]=o*u,e[9]=-a*u,e[2]=-c*u,e[6]=_*l+b,e[10]=x-w*l}else if("XZY"===t.order){x=o*s,_=o*c,b=a*s,w=a*c;e[0]=s*u,e[4]=-l,e[8]=c*u,e[1]=x*l+w,e[5]=o*u,e[9]=_*l-b,e[2]=b*l-_,e[6]=a*u,e[10]=w*l+x}return e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},makeRotationFromQuaternion:function(t){var e=this.elements,n=t._x,r=t._y,i=t._z,o=t._w,a=n+n,s=r+r,c=i+i,u=n*a,l=n*s,h=n*c,f=r*s,d=r*c,p=i*c,m=o*a,g=o*s,v=o*c;return e[0]=1-(f+p),e[4]=l-v,e[8]=h+g,e[1]=l+v,e[5]=1-(u+p),e[9]=d-m,e[2]=h-g,e[6]=d+m,e[10]=1-(u+f),e[3]=0,e[7]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,this},lookAt:(Ie=new He,Oe=new He,Ue=new He,function(t,e,n){var r=this.elements;return Ue.subVectors(t,e),0===Ue.lengthSq()&&(Ue.z=1),Ue.normalize(),Ie.crossVectors(n,Ue),0===Ie.lengthSq()&&(1===Math.abs(n.z)?Ue.x+=1e-4:Ue.z+=1e-4,Ue.normalize(),Ie.crossVectors(n,Ue)),Ie.normalize(),Oe.crossVectors(Ue,Ie),r[0]=Ie.x,r[4]=Oe.x,r[8]=Ue.x,r[1]=Ie.y,r[5]=Oe.y,r[9]=Ue.y,r[2]=Ie.z,r[6]=Oe.z,r[10]=Ue.z,this}),multiply:function(t,e){return void 0!==e?(console.warn("THREE.Matrix4: .multiply() now only accepts one argument. Use .multiplyMatrices( a, b ) instead."),this.multiplyMatrices(t,e)):this.multiplyMatrices(this,t)},premultiply:function(t){return this.multiplyMatrices(t,this)},multiplyMatrices:function(t,e){var n=t.elements,r=e.elements,i=this.elements,o=n[0],a=n[4],s=n[8],c=n[12],u=n[1],l=n[5],h=n[9],f=n[13],d=n[2],p=n[6],m=n[10],g=n[14],v=n[3],y=n[7],x=n[11],_=n[15],b=r[0],w=r[4],M=r[8],E=r[12],T=r[1],S=r[5],A=r[9],R=r[13],L=r[2],P=r[6],C=r[10],I=r[14],O=r[3],U=r[7],N=r[11],D=r[15];return i[0]=o*b+a*T+s*L+c*O,i[4]=o*w+a*S+s*P+c*U,i[8]=o*M+a*A+s*C+c*N,i[12]=o*E+a*R+s*I+c*D,i[1]=u*b+l*T+h*L+f*O,i[5]=u*w+l*S+h*P+f*U,i[9]=u*M+l*A+h*C+f*N,i[13]=u*E+l*R+h*I+f*D,i[2]=d*b+p*T+m*L+g*O,i[6]=d*w+p*S+m*P+g*U,i[10]=d*M+p*A+m*C+g*N,i[14]=d*E+p*R+m*I+g*D,i[3]=v*b+y*T+x*L+_*O,i[7]=v*w+y*S+x*P+_*U,i[11]=v*M+y*A+x*C+_*N,i[15]=v*E+y*R+x*I+_*D,this},multiplyScalar:function(t){var e=this.elements;return e[0]*=t,e[4]*=t,e[8]*=t,e[12]*=t,e[1]*=t,e[5]*=t,e[9]*=t,e[13]*=t,e[2]*=t,e[6]*=t,e[10]*=t,e[14]*=t,e[3]*=t,e[7]*=t,e[11]*=t,e[15]*=t,this},applyToBufferAttribute:function(){var t=new He;return function(e){for(var n=0,r=e.count;n0)return t;var i=e*n,o=Ye[i];if(void 0===o&&(o=new Float32Array(i),Ye[i]=o),0!==e){r.toArray(o,0);for(var a=1,s=0;a!==e;++a)s+=n,t[a].toArray(o,s)}return o}function $e(t,e){var n=Ze[e];void 0===n&&(n=new Int32Array(e),Ze[e]=n);for(var r=0;r!==e;++r)n[r]=t.allocTextureUnit();return n}function tn(t,e){t.uniform1f(this.addr,e)}function en(t,e){t.uniform1i(this.addr,e)}function nn(t,e){void 0===e.x?t.uniform2fv(this.addr,e):t.uniform2f(this.addr,e.x,e.y)}function rn(t,e){void 0!==e.x?t.uniform3f(this.addr,e.x,e.y,e.z):void 0!==e.r?t.uniform3f(this.addr,e.r,e.g,e.b):t.uniform3fv(this.addr,e)}function on(t,e){void 0===e.x?t.uniform4fv(this.addr,e):t.uniform4f(this.addr,e.x,e.y,e.z,e.w)}function an(t,e){t.uniformMatrix2fv(this.addr,!1,e.elements||e)}function sn(t,e){void 0===e.elements?t.uniformMatrix3fv(this.addr,!1,e):(Ke.set(e.elements),t.uniformMatrix3fv(this.addr,!1,Ke))}function cn(t,e){void 0===e.elements?t.uniformMatrix4fv(this.addr,!1,e):(Je.set(e.elements),t.uniformMatrix4fv(this.addr,!1,Je))}function un(t,e,n){var r=n.allocTextureUnit();t.uniform1i(this.addr,r),n.setTexture2D(e||We,r)}function ln(t,e,n){var r=n.allocTextureUnit();t.uniform1i(this.addr,r),n.setTextureCube(e||Xe,r)}function hn(t,e){t.uniform2iv(this.addr,e)}function fn(t,e){t.uniform3iv(this.addr,e)}function dn(t,e){t.uniform4iv(this.addr,e)}function pn(t,e){t.uniform1fv(this.addr,e)}function mn(t,e){t.uniform1iv(this.addr,e)}function gn(t,e){t.uniform2fv(this.addr,Qe(e,this.size,2))}function vn(t,e){t.uniform3fv(this.addr,Qe(e,this.size,3))}function yn(t,e){t.uniform4fv(this.addr,Qe(e,this.size,4))}function xn(t,e){t.uniformMatrix2fv(this.addr,!1,Qe(e,this.size,4))}function _n(t,e){t.uniformMatrix3fv(this.addr,!1,Qe(e,this.size,9))}function bn(t,e){t.uniformMatrix4fv(this.addr,!1,Qe(e,this.size,16))}function wn(t,e,n){var r=e.length,i=$e(n,r);t.uniform1iv(this.addr,i);for(var o=0;o!==r;++o)n.setTexture2D(e[o]||We,i[o])}function Mn(t,e,n){var r=e.length,i=$e(n,r);t.uniform1iv(this.addr,i);for(var o=0;o!==r;++o)n.setTextureCube(e[o]||Xe,i[o])}function En(t,e,n){this.id=t,this.addr=n,this.setValue=function(t){switch(t){case 5126:return tn;case 35664:return nn;case 35665:return rn;case 35666:return on;case 35674:return an;case 35675:return sn;case 35676:return cn;case 35678:case 36198:return un;case 35680:return ln;case 5124:case 35670:return en;case 35667:case 35671:return hn;case 35668:case 35672:return fn;case 35669:case 35673:return dn}}(e.type)}function Tn(t,e,n){this.id=t,this.addr=n,this.size=e.size,this.setValue=function(t){switch(t){case 5126:return pn;case 35664:return gn;case 35665:return vn;case 35666:return yn;case 35674:return xn;case 35675:return _n;case 35676:return bn;case 35678:return wn;case 35680:return Mn;case 5124:case 35670:return mn;case 35667:case 35671:return hn;case 35668:case 35672:return fn;case 35669:case 35673:return dn}}(e.type)}function Sn(t){this.id=t,qe.call(this)}Sn.prototype.setValue=function(t,e){for(var n=this.seq,r=0,i=n.length;r!==i;++r){var o=n[r];o.setValue(t,e[o.id])}};var An=/([\w\d_]+)(\])?(\[|\.)?/g;function Rn(t,e){t.seq.push(e),t.map[e.id]=e}function Ln(t,e,n){var r=t.name,i=r.length;for(An.lastIndex=0;;){var o=An.exec(r),a=An.lastIndex,s=o[1],c="]"===o[2],u=o[3];if(c&&(s|=0),void 0===u||"["===u&&a+2===i){Rn(n,void 0===u?new En(s,t,e):new Tn(s,t,e));break}var l=n.map[s];void 0===l&&Rn(n,l=new Sn(s)),n=l}}function Pn(t,e,n){qe.call(this),this.renderer=n;for(var r=t.getProgramParameter(e,t.ACTIVE_UNIFORMS),i=0;i>16&255)/255,this.g=(t>>8&255)/255,this.b=(255&t)/255,this},setRGB:function(t,e,n){return this.r=t,this.g=e,this.b=n,this},setHSL:function(){function t(t,e,n){return n<0&&(n+=1),n>1&&(n-=1),n<1/6?t+6*(e-t)*n:n<.5?e:n<2/3?t+6*(e-t)*(2/3-n):t}return function(e,n,r){if(e=Ae.euclideanModulo(e,1),n=Ae.clamp(n,0,1),r=Ae.clamp(r,0,1),0===n)this.r=this.g=this.b=r;else{var i=r<=.5?r*(1+n):r+n-r*n,o=2*r-i;this.r=t(o,i,e+1/3),this.g=t(o,i,e),this.b=t(o,i,e-1/3)}return this}}(),setStyle:function(t){function e(e){void 0!==e&&parseFloat(e)<1&&console.warn("THREE.Color: Alpha component of "+t+" will be ignored.")}var n;if(n=/^((?:rgb|hsl)a?)\(\s*([^\)]*)\)/.exec(t)){var r,i=n[1],o=n[2];switch(i){case"rgb":case"rgba":if(r=/^(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o))return this.r=Math.min(255,parseInt(r[1],10))/255,this.g=Math.min(255,parseInt(r[2],10))/255,this.b=Math.min(255,parseInt(r[3],10))/255,e(r[5]),this;if(r=/^(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o))return this.r=Math.min(100,parseInt(r[1],10))/100,this.g=Math.min(100,parseInt(r[2],10))/100,this.b=Math.min(100,parseInt(r[3],10))/100,e(r[5]),this;break;case"hsl":case"hsla":if(r=/^([0-9]*\.?[0-9]+)\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(,\s*([0-9]*\.?[0-9]+)\s*)?$/.exec(o)){var a=parseFloat(r[1])/360,s=parseInt(r[2],10)/100,c=parseInt(r[3],10)/100;return e(r[5]),this.setHSL(a,s,c)}}}else if(n=/^\#([A-Fa-f0-9]+)$/.exec(t)){var u,l=(u=n[1]).length;if(3===l)return this.r=parseInt(u.charAt(0)+u.charAt(0),16)/255,this.g=parseInt(u.charAt(1)+u.charAt(1),16)/255,this.b=parseInt(u.charAt(2)+u.charAt(2),16)/255,this;if(6===l)return this.r=parseInt(u.charAt(0)+u.charAt(1),16)/255,this.g=parseInt(u.charAt(2)+u.charAt(3),16)/255,this.b=parseInt(u.charAt(4)+u.charAt(5),16)/255,this}t&&t.length>0&&(void 0!==(u=Cn[t])?this.setHex(u):console.warn("THREE.Color: Unknown color "+t));return this},clone:function(){return new this.constructor(this.r,this.g,this.b)},copy:function(t){return this.r=t.r,this.g=t.g,this.b=t.b,this},copyGammaToLinear:function(t,e){return void 0===e&&(e=2),this.r=Math.pow(t.r,e),this.g=Math.pow(t.g,e),this.b=Math.pow(t.b,e),this},copyLinearToGamma:function(t,e){void 0===e&&(e=2);var n=e>0?1/e:1;return this.r=Math.pow(t.r,n),this.g=Math.pow(t.g,n),this.b=Math.pow(t.b,n),this},convertGammaToLinear:function(){var t=this.r,e=this.g,n=this.b;return this.r=t*t,this.g=e*e,this.b=n*n,this},convertLinearToGamma:function(){return this.r=Math.sqrt(this.r),this.g=Math.sqrt(this.g),this.b=Math.sqrt(this.b),this},getHex:function(){return 255*this.r<<16^255*this.g<<8^255*this.b<<0},getHexString:function(){return("000000"+this.getHex().toString(16)).slice(-6)},getHSL:function(t){var e,n,r=t||{h:0,s:0,l:0},i=this.r,o=this.g,a=this.b,s=Math.max(i,o,a),c=Math.min(i,o,a),u=(c+s)/2;if(c===s)e=0,n=0;else{var l=s-c;switch(n=u<=.5?l/(s+c):l/(2-s-c),s){case i:e=(o-a)/l+(o 0.0 ) {\n#if defined ( PHYSICALLY_CORRECT_LIGHTS )\n\t\tfloat distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n\t\tfloat maxDistanceCutoffFactor = pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n\t\treturn distanceFalloff * maxDistanceCutoffFactor;\n#else\n\t\treturn pow( saturate( -lightDistance / cutoffDistance + 1.0 ), decayExponent );\n#endif\n\t}\n\treturn 1.0;\n}\nvec3 BRDF_Diffuse_Lambert( const in vec3 diffuseColor ) {\n\treturn RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 specularColor, const in float dotLH ) {\n\tfloat fresnel = exp2( ( -5.55473 * dotLH - 6.98316 ) * dotLH );\n\treturn ( 1.0 - specularColor ) * fresnel + specularColor;\n}\nfloat G_GGX_Smith( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gl = dotNL + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\tfloat gv = dotNV + sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\treturn 1.0 / ( gl * gv );\n}\nfloat G_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n\tfloat a2 = pow2( alpha );\n\tfloat gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n\tfloat gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n\treturn 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n\tfloat a2 = pow2( alpha );\n\tfloat denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n\treturn RECIPROCAL_PI * a2 / pow2( denom );\n}\nvec3 BRDF_Specular_GGX( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat alpha = pow2( roughness );\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNL = saturate( dot( geometry.normal, incidentLight.direction ) );\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n\tfloat D = D_GGX( alpha, dotNH );\n\treturn F * ( G * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n\tconst float LUT_SIZE = 64.0;\n\tconst float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n\tconst float LUT_BIAS = 0.5 / LUT_SIZE;\n\tfloat theta = acos( dot( N, V ) );\n\tvec2 uv = vec2(\n\t\tsqrt( saturate( roughness ) ),\n\t\tsaturate( theta / ( 0.5 * PI ) ) );\n\tuv = uv * LUT_SCALE + LUT_BIAS;\n\treturn uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n\tfloat l = length( f );\n\treturn max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n\tfloat x = dot( v1, v2 );\n\tfloat y = abs( x );\n\tfloat a = 0.86267 + (0.49788 + 0.01436 * y ) * y;\n\tfloat b = 3.45068 + (4.18814 + y) * y;\n\tfloat v = a / b;\n\tfloat theta_sintheta = (x > 0.0) ? v : 0.5 * inversesqrt( 1.0 - x * x ) - v;\n\treturn cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n\tvec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n\tvec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n\tvec3 lightNormal = cross( v1, v2 );\n\tif( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n\tvec3 T1, T2;\n\tT1 = normalize( V - N * dot( V, N ) );\n\tT2 = - cross( N, T1 );\n\tmat3 mat = mInv * transpose( mat3( T1, T2, N ) );\n\tvec3 coords[ 4 ];\n\tcoords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n\tcoords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n\tcoords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n\tcoords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n\tcoords[ 0 ] = normalize( coords[ 0 ] );\n\tcoords[ 1 ] = normalize( coords[ 1 ] );\n\tcoords[ 2 ] = normalize( coords[ 2 ] );\n\tcoords[ 3 ] = normalize( coords[ 3 ] );\n\tvec3 vectorFormFactor = vec3( 0.0 );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n\tvectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n\tvec3 result = vec3( LTC_ClippedSphereFormFactor( vectorFormFactor ) );\n\treturn result;\n}\nvec3 BRDF_Specular_GGX_Environment( const in GeometricContext geometry, const in vec3 specularColor, const in float roughness ) {\n\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\tconst vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n\tconst vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n\tvec4 r = roughness * c0 + c1;\n\tfloat a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n\tvec2 AB = vec2( -1.04, 1.04 ) * a004 + r.zw;\n\treturn specularColor * AB.x + AB.y;\n}\nfloat G_BlinnPhong_Implicit( ) {\n\treturn 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n\treturn RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_Specular_BlinnPhong( const in IncidentLight incidentLight, const in GeometricContext geometry, const in vec3 specularColor, const in float shininess ) {\n\tvec3 halfDir = normalize( incidentLight.direction + geometry.viewDir );\n\tfloat dotNH = saturate( dot( geometry.normal, halfDir ) );\n\tfloat dotLH = saturate( dot( incidentLight.direction, halfDir ) );\n\tvec3 F = F_Schlick( specularColor, dotLH );\n\tfloat G = G_BlinnPhong_Implicit( );\n\tfloat D = D_BlinnPhong( shininess, dotNH );\n\treturn F * ( G * D );\n}\nfloat GGXRoughnessToBlinnExponent( const in float ggxRoughness ) {\n\treturn ( 2.0 / pow2( ggxRoughness + 0.0001 ) - 2.0 );\n}\nfloat BlinnExponentToGGXRoughness( const in float blinnExponent ) {\n\treturn sqrt( 2.0 / ( blinnExponent + 2.0 ) );\n}\n",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n\tuniform sampler2D bumpMap;\n\tuniform float bumpScale;\n\tvec2 dHdxy_fwd() {\n\t\tvec2 dSTdx = dFdx( vUv );\n\t\tvec2 dSTdy = dFdy( vUv );\n\t\tfloat Hll = bumpScale * texture2D( bumpMap, vUv ).x;\n\t\tfloat dBx = bumpScale * texture2D( bumpMap, vUv + dSTdx ).x - Hll;\n\t\tfloat dBy = bumpScale * texture2D( bumpMap, vUv + dSTdy ).x - Hll;\n\t\treturn vec2( dBx, dBy );\n\t}\n\tvec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy ) {\n\t\tvec3 vSigmaX = vec3( dFdx( surf_pos.x ), dFdx( surf_pos.y ), dFdx( surf_pos.z ) );\n\t\tvec3 vSigmaY = vec3( dFdy( surf_pos.x ), dFdy( surf_pos.y ), dFdy( surf_pos.z ) );\n\t\tvec3 vN = surf_norm;\n\t\tvec3 R1 = cross( vSigmaY, vN );\n\t\tvec3 R2 = cross( vN, vSigmaX );\n\t\tfloat fDet = dot( vSigmaX, R1 );\n\t\tvec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n\t\treturn normalize( abs( fDet ) * surf_norm - vGrad );\n\t}\n#endif\n",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n\tfor ( int i = 0; i < UNION_CLIPPING_PLANES; ++ i ) {\n\t\tvec4 plane = clippingPlanes[ i ];\n\t\tif ( dot( vViewPosition, plane.xyz ) > plane.w ) discard;\n\t}\n\t\t\n\t#if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n\t\tbool clipped = true;\n\t\tfor ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; ++ i ) {\n\t\t\tvec4 plane = clippingPlanes[ i ];\n\t\t\tclipped = ( dot( vViewPosition, plane.xyz ) > plane.w ) && clipped;\n\t\t}\n\t\tif ( clipped ) discard;\n\t\n\t#endif\n#endif\n",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n\t#if ! defined( PHYSICAL ) && ! defined( PHONG )\n\t\tvarying vec3 vViewPosition;\n\t#endif\n\tuniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif\n",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvarying vec3 vViewPosition;\n#endif\n",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0 && ! defined( PHYSICAL ) && ! defined( PHONG )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n",color_fragment:"#ifdef USE_COLOR\n\tdiffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif\n",color_pars_vertex:"#ifdef USE_COLOR\n\tvarying vec3 vColor;\n#endif",color_vertex:"#ifdef USE_COLOR\n\tvColor.xyz = color.xyz;\n#endif",common:"#define PI 3.14159265359\n#define PI2 6.28318530718\n#define PI_HALF 1.5707963267949\n#define RECIPROCAL_PI 0.31830988618\n#define RECIPROCAL_PI2 0.15915494\n#define LOG2 1.442695\n#define EPSILON 1e-6\n#define saturate(a) clamp( a, 0.0, 1.0 )\n#define whiteCompliment(a) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat average( const in vec3 color ) { return dot( color, vec3( 0.3333 ) ); }\nhighp float rand( const in vec2 uv ) {\n\tconst highp float a = 12.9898, b = 78.233, c = 43758.5453;\n\thighp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n\treturn fract(sin(sn) * c);\n}\nstruct IncidentLight {\n\tvec3 color;\n\tvec3 direction;\n\tbool visible;\n};\nstruct ReflectedLight {\n\tvec3 directDiffuse;\n\tvec3 directSpecular;\n\tvec3 indirectDiffuse;\n\tvec3 indirectSpecular;\n};\nstruct GeometricContext {\n\tvec3 position;\n\tvec3 normal;\n\tvec3 viewDir;\n};\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n\treturn normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nvec3 projectOnPlane(in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\tfloat distance = dot( planeNormal, point - pointOnPlane );\n\treturn - distance * planeNormal + point;\n}\nfloat sideOfPlane( in vec3 point, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn sign( dot( point - pointOnPlane, planeNormal ) );\n}\nvec3 linePlaneIntersect( in vec3 pointOnLine, in vec3 lineDirection, in vec3 pointOnPlane, in vec3 planeNormal ) {\n\treturn lineDirection * ( dot( planeNormal, pointOnPlane - pointOnLine ) / dot( planeNormal, lineDirection ) ) + pointOnLine;\n}\nmat3 transpose( const in mat3 v ) {\n\tmat3 tmp;\n\ttmp[0] = vec3(v[0].x, v[1].x, v[2].x);\n\ttmp[1] = vec3(v[0].y, v[1].y, v[2].y);\n\ttmp[2] = vec3(v[0].z, v[1].z, v[2].z);\n\treturn tmp;\n}\n",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n#define cubeUV_textureSize (1024.0)\nint getFaceFromDirection(vec3 direction) {\n\tvec3 absDirection = abs(direction);\n\tint face = -1;\n\tif( absDirection.x > absDirection.z ) {\n\t\tif(absDirection.x > absDirection.y )\n\t\t\tface = direction.x > 0.0 ? 0 : 3;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\telse {\n\t\tif(absDirection.z > absDirection.y )\n\t\t\tface = direction.z > 0.0 ? 2 : 5;\n\t\telse\n\t\t\tface = direction.y > 0.0 ? 1 : 4;\n\t}\n\treturn face;\n}\n#define cubeUV_maxLods1 (log2(cubeUV_textureSize*0.25) - 1.0)\n#define cubeUV_rangeClamp (exp2((6.0 - 1.0) * 2.0))\nvec2 MipLevelInfo( vec3 vec, float roughnessLevel, float roughness ) {\n\tfloat scale = exp2(cubeUV_maxLods1 - roughnessLevel);\n\tfloat dxRoughness = dFdx(roughness);\n\tfloat dyRoughness = dFdy(roughness);\n\tvec3 dx = dFdx( vec * scale * dxRoughness );\n\tvec3 dy = dFdy( vec * scale * dyRoughness );\n\tfloat d = max( dot( dx, dx ), dot( dy, dy ) );\n\td = clamp(d, 1.0, cubeUV_rangeClamp);\n\tfloat mipLevel = 0.5 * log2(d);\n\treturn vec2(floor(mipLevel), fract(mipLevel));\n}\n#define cubeUV_maxLods2 (log2(cubeUV_textureSize*0.25) - 2.0)\n#define cubeUV_rcpTextureSize (1.0 / cubeUV_textureSize)\nvec2 getCubeUV(vec3 direction, float roughnessLevel, float mipLevel) {\n\tmipLevel = roughnessLevel > cubeUV_maxLods2 - 3.0 ? 0.0 : mipLevel;\n\tfloat a = 16.0 * cubeUV_rcpTextureSize;\n\tvec2 exp2_packed = exp2( vec2( roughnessLevel, mipLevel ) );\n\tvec2 rcp_exp2_packed = vec2( 1.0 ) / exp2_packed;\n\tfloat powScale = exp2_packed.x * exp2_packed.y;\n\tfloat scale = rcp_exp2_packed.x * rcp_exp2_packed.y * 0.25;\n\tfloat mipOffset = 0.75*(1.0 - rcp_exp2_packed.y) * rcp_exp2_packed.x;\n\tbool bRes = mipLevel == 0.0;\n\tscale = bRes && (scale < a) ? a : scale;\n\tvec3 r;\n\tvec2 offset;\n\tint face = getFaceFromDirection(direction);\n\tfloat rcpPowScale = 1.0 / powScale;\n\tif( face == 0) {\n\t\tr = vec3(direction.x, -direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 1) {\n\t\tr = vec3(direction.y, direction.x, direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 2) {\n\t\tr = vec3(direction.z, direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.75 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? a : offset.y;\n\t}\n\telse if( face == 3) {\n\t\tr = vec3(direction.x, direction.z, direction.y);\n\t\toffset = vec2(0.0+mipOffset,0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse if( face == 4) {\n\t\tr = vec3(direction.y, direction.x, -direction.z);\n\t\toffset = vec2(scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\telse {\n\t\tr = vec3(direction.z, -direction.x, direction.y);\n\t\toffset = vec2(2.0*scale+mipOffset, 0.5 * rcpPowScale);\n\t\toffset.y = bRes && (offset.y < 2.0*a) ? 0.0 : offset.y;\n\t}\n\tr = normalize(r);\n\tfloat texelOffset = 0.5 * cubeUV_rcpTextureSize;\n\tvec2 s = ( r.yz / abs( r.x ) + vec2( 1.0 ) ) * 0.5;\n\tvec2 base = offset + vec2( texelOffset );\n\treturn base + s * ( scale - 2.0 * texelOffset );\n}\n#define cubeUV_maxLods3 (log2(cubeUV_textureSize*0.25) - 3.0)\nvec4 textureCubeUV(vec3 reflectedDirection, float roughness ) {\n\tfloat roughnessVal = roughness* cubeUV_maxLods3;\n\tfloat r1 = floor(roughnessVal);\n\tfloat r2 = r1 + 1.0;\n\tfloat t = fract(roughnessVal);\n\tvec2 mipInfo = MipLevelInfo(reflectedDirection, r1, roughness);\n\tfloat s = mipInfo.y;\n\tfloat level0 = mipInfo.x;\n\tfloat level1 = level0 + 1.0;\n\tlevel1 = level1 > 5.0 ? 5.0 : level1;\n\tlevel0 += min( floor( s + 0.5 ), 5.0 );\n\tvec2 uv_10 = getCubeUV(reflectedDirection, r1, level0);\n\tvec4 color10 = envMapTexelToLinear(texture2D(envMap, uv_10));\n\tvec2 uv_20 = getCubeUV(reflectedDirection, r2, level0);\n\tvec4 color20 = envMapTexelToLinear(texture2D(envMap, uv_20));\n\tvec4 result = mix(color10, color20, t);\n\treturn vec4(result.rgb, 1.0);\n}\n#endif\n",defaultnormal_vertex:"vec3 transformedNormal = normalMatrix * objectNormal;\n#ifdef FLIP_SIDED\n\ttransformedNormal = - transformedNormal;\n#endif\n",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n\tuniform sampler2D displacementMap;\n\tuniform float displacementScale;\n\tuniform float displacementBias;\n#endif\n",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n\ttransformed += normalize( objectNormal ) * ( texture2D( displacementMap, uv ).x * displacementScale + displacementBias );\n#endif\n",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n\tvec4 emissiveColor = texture2D( emissiveMap, vUv );\n\temissiveColor.rgb = emissiveMapTexelToLinear( emissiveColor ).rgb;\n\ttotalEmissiveRadiance *= emissiveColor.rgb;\n#endif\n",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n\tuniform sampler2D emissiveMap;\n#endif\n",encodings_fragment:" gl_FragColor = linearToOutputTexel( gl_FragColor );\n",encodings_pars_fragment:"\nvec4 LinearToLinear( in vec4 value ) {\n\treturn value;\n}\nvec4 GammaToLinear( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( gammaFactor ) ), value.w );\n}\nvec4 LinearToGamma( in vec4 value, in float gammaFactor ) {\n\treturn vec4( pow( value.xyz, vec3( 1.0 / gammaFactor ) ), value.w );\n}\nvec4 sRGBToLinear( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.w );\n}\nvec4 LinearTosRGB( in vec4 value ) {\n\treturn vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.w );\n}\nvec4 RGBEToLinear( in vec4 value ) {\n\treturn vec4( value.rgb * exp2( value.a * 255.0 - 128.0 ), 1.0 );\n}\nvec4 LinearToRGBE( in vec4 value ) {\n\tfloat maxComponent = max( max( value.r, value.g ), value.b );\n\tfloat fExp = clamp( ceil( log2( maxComponent ) ), -128.0, 127.0 );\n\treturn vec4( value.rgb / exp2( fExp ), ( fExp + 128.0 ) / 255.0 );\n}\nvec4 RGBMToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.xyz * value.w * maxRange, 1.0 );\n}\nvec4 LinearToRGBM( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat M = clamp( maxRGB / maxRange, 0.0, 1.0 );\n\tM = ceil( M * 255.0 ) / 255.0;\n\treturn vec4( value.rgb / ( M * maxRange ), M );\n}\nvec4 RGBDToLinear( in vec4 value, in float maxRange ) {\n\treturn vec4( value.rgb * ( ( maxRange / 255.0 ) / value.a ), 1.0 );\n}\nvec4 LinearToRGBD( in vec4 value, in float maxRange ) {\n\tfloat maxRGB = max( value.x, max( value.g, value.b ) );\n\tfloat D = max( maxRange / maxRGB, 1.0 );\n\tD = min( floor( D ) / 255.0, 1.0 );\n\treturn vec4( value.rgb * ( D * ( 255.0 / maxRange ) ), D );\n}\nconst mat3 cLogLuvM = mat3( 0.2209, 0.3390, 0.4184, 0.1138, 0.6780, 0.7319, 0.0102, 0.1130, 0.2969 );\nvec4 LinearToLogLuv( in vec4 value ) {\n\tvec3 Xp_Y_XYZp = value.rgb * cLogLuvM;\n\tXp_Y_XYZp = max(Xp_Y_XYZp, vec3(1e-6, 1e-6, 1e-6));\n\tvec4 vResult;\n\tvResult.xy = Xp_Y_XYZp.xy / Xp_Y_XYZp.z;\n\tfloat Le = 2.0 * log2(Xp_Y_XYZp.y) + 127.0;\n\tvResult.w = fract(Le);\n\tvResult.z = (Le - (floor(vResult.w*255.0))/255.0)/255.0;\n\treturn vResult;\n}\nconst mat3 cLogLuvInverseM = mat3( 6.0014, -2.7008, -1.7996, -1.3320, 3.1029, -5.7721, 0.3008, -1.0882, 5.6268 );\nvec4 LogLuvToLinear( in vec4 value ) {\n\tfloat Le = value.z * 255.0 + value.w;\n\tvec3 Xp_Y_XYZp;\n\tXp_Y_XYZp.y = exp2((Le - 127.0) / 2.0);\n\tXp_Y_XYZp.z = Xp_Y_XYZp.y / value.y;\n\tXp_Y_XYZp.x = value.x * Xp_Y_XYZp.z;\n\tvec3 vRGB = Xp_Y_XYZp.rgb * cLogLuvInverseM;\n\treturn vec4( max(vRGB, 0.0), 1.0 );\n}\n",envmap_fragment:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvec3 cameraToVertex = normalize( vWorldPosition - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#else\n\t\tvec3 reflectVec = vReflect;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tvec4 envColor = textureCube( envMap, flipNormal * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\tvec2 sampleUV;\n\t\tsampleUV.y = asin( flipNormal * reflectVec.y ) * RECIPROCAL_PI + 0.5;\n\t\tsampleUV.x = atan( flipNormal * reflectVec.z, flipNormal * reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\tvec4 envColor = texture2D( envMap, sampleUV );\n\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\tvec3 reflectView = flipNormal * normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0, 0.0, 1.0 ) );\n\t\tvec4 envColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5 );\n\t#else\n\t\tvec4 envColor = vec4( 0.0 );\n\t#endif\n\tenvColor = envMapTexelToLinear( envColor );\n\t#ifdef ENVMAP_BLENDING_MULTIPLY\n\t\toutgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_MIX )\n\t\toutgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n\t#elif defined( ENVMAP_BLENDING_ADD )\n\t\toutgoingLight += envColor.xyz * specularStrength * reflectivity;\n\t#endif\n#endif\n",envmap_pars_fragment:"#if defined( USE_ENVMAP ) || defined( PHYSICAL )\n\tuniform float reflectivity;\n\tuniform float envMapIntensity;\n#endif\n#ifdef USE_ENVMAP\n\t#if ! defined( PHYSICAL ) && ( defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) )\n\t\tvarying vec3 vWorldPosition;\n\t#endif\n\t#ifdef ENVMAP_TYPE_CUBE\n\t\tuniform samplerCube envMap;\n\t#else\n\t\tuniform sampler2D envMap;\n\t#endif\n\tuniform float flipEnvMap;\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( PHYSICAL )\n\t\tuniform float refractionRatio;\n\t#else\n\t\tvarying vec3 vReflect;\n\t#endif\n#endif\n",envmap_pars_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvarying vec3 vWorldPosition;\n\t#else\n\t\tvarying vec3 vReflect;\n\t\tuniform float refractionRatio;\n\t#endif\n#endif\n",envmap_vertex:"#ifdef USE_ENVMAP\n\t#if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG )\n\t\tvWorldPosition = worldPosition.xyz;\n\t#else\n\t\tvec3 cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n\t\tvec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvReflect = reflect( cameraToVertex, worldNormal );\n\t\t#else\n\t\t\tvReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n\t\t#endif\n\t#endif\n#endif\n",fog_vertex:"\n#ifdef USE_FOG\nfogDepth = -mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float fogDepth;\n#endif\n",fog_fragment:"#ifdef USE_FOG\n\t#ifdef FOG_EXP2\n\t\tfloat fogFactor = whiteCompliment( exp2( - fogDensity * fogDensity * fogDepth * fogDepth * LOG2 ) );\n\t#else\n\t\tfloat fogFactor = smoothstep( fogNear, fogFar, fogDepth );\n\t#endif\n\tgl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif\n",fog_pars_fragment:"#ifdef USE_FOG\n\tuniform vec3 fogColor;\n\tvarying float fogDepth;\n\t#ifdef FOG_EXP2\n\t\tuniform float fogDensity;\n\t#else\n\t\tuniform float fogNear;\n\t\tuniform float fogFar;\n\t#endif\n#endif\n",gradientmap_pars_fragment:"#ifdef TOON\n\tuniform sampler2D gradientMap;\n\tvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n\t\tfloat dotNL = dot( normal, lightDirection );\n\t\tvec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n\t\t#ifdef USE_GRADIENTMAP\n\t\t\treturn texture2D( gradientMap, coord ).rgb;\n\t\t#else\n\t\t\treturn ( coord.x < 0.7 ) ? vec3( 0.7 ) : vec3( 1.0 );\n\t\t#endif\n\t}\n#endif\n",lightmap_fragment:"#ifdef USE_LIGHTMAP\n\treflectedLight.indirectDiffuse += PI * texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n#endif\n",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n\tuniform sampler2D lightMap;\n\tuniform float lightMapIntensity;\n#endif",lights_lambert_vertex:"vec3 diffuse = vec3( 1.0 );\nGeometricContext geometry;\ngeometry.position = mvPosition.xyz;\ngeometry.normal = normalize( transformedNormal );\ngeometry.viewDir = normalize( -mvPosition.xyz );\nGeometricContext backGeometry;\nbackGeometry.position = geometry.position;\nbackGeometry.normal = -geometry.normal;\nbackGeometry.viewDir = geometry.viewDir;\nvLightFront = vec3( 0.0 );\n#ifdef DOUBLE_SIDED\n\tvLightBack = vec3( 0.0 );\n#endif\nIncidentLight directLight;\nfloat dotNL;\nvec3 directLightColor_Diffuse;\n#if NUM_POINT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tgetPointDirectLightIrradiance( pointLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tgetSpotDirectLightIrradiance( spotLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_DIR_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tgetDirectionalDirectLightIrradiance( directionalLights[ i ], geometry, directLight );\n\t\tdotNL = dot( geometry.normal, directLight.direction );\n\t\tdirectLightColor_Diffuse = PI * directLight.color;\n\t\tvLightFront += saturate( dotNL ) * directLightColor_Diffuse;\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += saturate( -dotNL ) * directLightColor_Diffuse;\n\t\t#endif\n\t}\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\tvLightFront += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t#ifdef DOUBLE_SIDED\n\t\t\tvLightBack += getHemisphereLightIrradiance( hemisphereLights[ i ], backGeometry );\n\t\t#endif\n\t}\n#endif\n",lights_pars:"uniform vec3 ambientLightColor;\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n\tvec3 irradiance = ambientLightColor;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treturn irradiance;\n}\n#if NUM_DIR_LIGHTS > 0\n\tstruct DirectionalLight {\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n\tvoid getDirectionalDirectLightIrradiance( const in DirectionalLight directionalLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tdirectLight.color = directionalLight.color;\n\t\tdirectLight.direction = directionalLight.direction;\n\t\tdirectLight.visible = true;\n\t}\n#endif\n#if NUM_POINT_LIGHTS > 0\n\tstruct PointLight {\n\t\tvec3 position;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n\tvoid getPointDirectLightIrradiance( const in PointLight pointLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = pointLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tdirectLight.color = pointLight.color;\n\t\tdirectLight.color *= punctualLightIntensityToIrradianceFactor( lightDistance, pointLight.distance, pointLight.decay );\n\t\tdirectLight.visible = ( directLight.color != vec3( 0.0 ) );\n\t}\n#endif\n#if NUM_SPOT_LIGHTS > 0\n\tstruct SpotLight {\n\t\tvec3 position;\n\t\tvec3 direction;\n\t\tvec3 color;\n\t\tfloat distance;\n\t\tfloat decay;\n\t\tfloat coneCos;\n\t\tfloat penumbraCos;\n\t\tint shadow;\n\t\tfloat shadowBias;\n\t\tfloat shadowRadius;\n\t\tvec2 shadowMapSize;\n\t};\n\tuniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n\tvoid getSpotDirectLightIrradiance( const in SpotLight spotLight, const in GeometricContext geometry, out IncidentLight directLight ) {\n\t\tvec3 lVector = spotLight.position - geometry.position;\n\t\tdirectLight.direction = normalize( lVector );\n\t\tfloat lightDistance = length( lVector );\n\t\tfloat angleCos = dot( directLight.direction, spotLight.direction );\n\t\tif ( angleCos > spotLight.coneCos ) {\n\t\t\tfloat spotEffect = smoothstep( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n\t\t\tdirectLight.color = spotLight.color;\n\t\t\tdirectLight.color *= spotEffect * punctualLightIntensityToIrradianceFactor( lightDistance, spotLight.distance, spotLight.decay );\n\t\t\tdirectLight.visible = true;\n\t\t} else {\n\t\t\tdirectLight.color = vec3( 0.0 );\n\t\t\tdirectLight.visible = false;\n\t\t}\n\t}\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n\tstruct RectAreaLight {\n\t\tvec3 color;\n\t\tvec3 position;\n\t\tvec3 halfWidth;\n\t\tvec3 halfHeight;\n\t};\n\tuniform sampler2D ltcMat;\tuniform sampler2D ltcMag;\n\tuniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n\tstruct HemisphereLight {\n\t\tvec3 direction;\n\t\tvec3 skyColor;\n\t\tvec3 groundColor;\n\t};\n\tuniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n\tvec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in GeometricContext geometry ) {\n\t\tfloat dotNL = dot( geometry.normal, hemiLight.direction );\n\t\tfloat hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n\t\tvec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tirradiance *= PI;\n\t\t#endif\n\t\treturn irradiance;\n\t}\n#endif\n#if defined( USE_ENVMAP ) && defined( PHYSICAL )\n\tvec3 getLightProbeIndirectIrradiance( const in GeometricContext geometry, const in int maxMIPLevel ) {\n\t\tvec3 worldNormal = inverseTransformDirection( geometry.normal, viewMatrix );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryVec, float( maxMIPLevel ) );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryVec = vec3( flipEnvMap * worldNormal.x, worldNormal.yz );\n\t\t\tvec4 envMapColor = textureCubeUV( queryVec, 1.0 );\n\t\t#else\n\t\t\tvec4 envMapColor = vec4( 0.0 );\n\t\t#endif\n\t\treturn PI * envMapColor.rgb * envMapIntensity;\n\t}\n\tfloat getSpecularMIPLevel( const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\tfloat maxMIPLevelScalar = float( maxMIPLevel );\n\t\tfloat desiredMIPLevel = maxMIPLevelScalar - 0.79248 - 0.5 * log2( pow2( blinnShininessExponent ) + 1.0 );\n\t\treturn clamp( desiredMIPLevel, 0.0, maxMIPLevelScalar );\n\t}\n\tvec3 getLightProbeIndirectRadiance( const in GeometricContext geometry, const in float blinnShininessExponent, const in int maxMIPLevel ) {\n\t\t#ifdef ENVMAP_MODE_REFLECTION\n\t\t\tvec3 reflectVec = reflect( -geometry.viewDir, geometry.normal );\n\t\t#else\n\t\t\tvec3 reflectVec = refract( -geometry.viewDir, geometry.normal, refractionRatio );\n\t\t#endif\n\t\treflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n\t\tfloat specularMIPLevel = getSpecularMIPLevel( blinnShininessExponent, maxMIPLevel );\n\t\t#ifdef ENVMAP_TYPE_CUBE\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = textureCubeLodEXT( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = textureCube( envMap, queryReflectVec, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_CUBE_UV )\n\t\t\tvec3 queryReflectVec = vec3( flipEnvMap * reflectVec.x, reflectVec.yz );\n\t\t\tvec4 envMapColor = textureCubeUV(queryReflectVec, BlinnExponentToGGXRoughness(blinnShininessExponent));\n\t\t#elif defined( ENVMAP_TYPE_EQUIREC )\n\t\t\tvec2 sampleUV;\n\t\t\tsampleUV.y = saturate( reflectVec.y * 0.5 + 0.5 );\n\t\t\tsampleUV.x = atan( reflectVec.z, reflectVec.x ) * RECIPROCAL_PI2 + 0.5;\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, sampleUV, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, sampleUV, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#elif defined( ENVMAP_TYPE_SPHERE )\n\t\t\tvec3 reflectView = normalize( ( viewMatrix * vec4( reflectVec, 0.0 ) ).xyz + vec3( 0.0,0.0,1.0 ) );\n\t\t\t#ifdef TEXTURE_LOD_EXT\n\t\t\t\tvec4 envMapColor = texture2DLodEXT( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#else\n\t\t\t\tvec4 envMapColor = texture2D( envMap, reflectView.xy * 0.5 + 0.5, specularMIPLevel );\n\t\t\t#endif\n\t\t\tenvMapColor.rgb = envMapTexelToLinear( envMapColor ).rgb;\n\t\t#endif\n\t\treturn envMapColor.rgb * envMapIntensity;\n\t}\n#endif\n",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;\n",lights_phong_pars_fragment:"varying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\nstruct BlinnPhongMaterial {\n\tvec3\tdiffuseColor;\n\tvec3\tspecularColor;\n\tfloat\tspecularShininess;\n\tfloat\tspecularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifdef TOON\n\t\tvec3 irradiance = getGradientIrradiance( geometry.normal, directLight.direction ) * directLight.color;\n\t#else\n\t\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\t\tvec3 irradiance = dotNL * directLight.color;\n\t#endif\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\treflectedLight.directDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\treflectedLight.directSpecular += irradiance * BRDF_Specular_BlinnPhong( directLight, geometry, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in GeometricContext geometry, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\n#define RE_Direct\t\t\t\tRE_Direct_BlinnPhong\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_BlinnPhong\n#define Material_LightProbeLOD( material )\t(0)\n",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nmaterial.specularRoughness = clamp( roughnessFactor, 0.04, 1.0 );\n#ifdef STANDARD\n\tmaterial.specularColor = mix( vec3( DEFAULT_SPECULAR_COEFFICIENT ), diffuseColor.rgb, metalnessFactor );\n#else\n\tmaterial.specularColor = mix( vec3( MAXIMUM_SPECULAR_COEFFICIENT * pow2( reflectivity ) ), diffuseColor.rgb, metalnessFactor );\n\tmaterial.clearCoat = saturate( clearCoat );\tmaterial.clearCoatRoughness = clamp( clearCoatRoughness, 0.04, 1.0 );\n#endif\n",lights_physical_pars_fragment:"struct PhysicalMaterial {\n\tvec3\tdiffuseColor;\n\tfloat\tspecularRoughness;\n\tvec3\tspecularColor;\n\t#ifndef STANDARD\n\t\tfloat clearCoat;\n\t\tfloat clearCoatRoughness;\n\t#endif\n};\n#define MAXIMUM_SPECULAR_COEFFICIENT 0.16\n#define DEFAULT_SPECULAR_COEFFICIENT 0.04\nfloat clearCoatDHRApprox( const in float roughness, const in float dotNL ) {\n\treturn DEFAULT_SPECULAR_COEFFICIENT + ( 1.0 - DEFAULT_SPECULAR_COEFFICIENT ) * ( pow( 1.0 - dotNL, 5.0 ) * pow( 1.0 - roughness, 2.0 ) );\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n\tvoid RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t\tvec3 normal = geometry.normal;\n\t\tvec3 viewDir = geometry.viewDir;\n\t\tvec3 position = geometry.position;\n\t\tvec3 lightPos = rectAreaLight.position;\n\t\tvec3 halfWidth = rectAreaLight.halfWidth;\n\t\tvec3 halfHeight = rectAreaLight.halfHeight;\n\t\tvec3 lightColor = rectAreaLight.color;\n\t\tfloat roughness = material.specularRoughness;\n\t\tvec3 rectCoords[ 4 ];\n\t\trectCoords[ 0 ] = lightPos - halfWidth - halfHeight;\t\trectCoords[ 1 ] = lightPos + halfWidth - halfHeight;\n\t\trectCoords[ 2 ] = lightPos + halfWidth + halfHeight;\n\t\trectCoords[ 3 ] = lightPos - halfWidth + halfHeight;\n\t\tvec2 uv = LTC_Uv( normal, viewDir, roughness );\n\t\tfloat norm = texture2D( ltcMag, uv ).a;\n\t\tvec4 t = texture2D( ltcMat, uv );\n\t\tmat3 mInv = mat3(\n\t\t\tvec3( 1, 0, t.y ),\n\t\t\tvec3( 0, t.z, 0 ),\n\t\t\tvec3( t.w, 0, t.x )\n\t\t);\n\t\treflectedLight.directSpecular += lightColor * material.specularColor * norm * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n\t\treflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1 ), rectCoords );\n\t}\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\tfloat dotNL = saturate( dot( geometry.normal, directLight.direction ) );\n\tvec3 irradiance = dotNL * directLight.color;\n\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\tirradiance *= PI;\n\t#endif\n\t#ifndef STANDARD\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.directSpecular += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Specular_GGX( directLight, geometry, material.specularColor, material.specularRoughness );\n\treflectedLight.directDiffuse += ( 1.0 - clearCoatDHR ) * irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n\t#ifndef STANDARD\n\t\treflectedLight.directSpecular += irradiance * material.clearCoat * BRDF_Specular_GGX( directLight, geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\treflectedLight.indirectDiffuse += irradiance * BRDF_Diffuse_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 clearCoatRadiance, const in GeometricContext geometry, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n\t#ifndef STANDARD\n\t\tfloat dotNV = saturate( dot( geometry.normal, geometry.viewDir ) );\n\t\tfloat dotNL = dotNV;\n\t\tfloat clearCoatDHR = material.clearCoat * clearCoatDHRApprox( material.clearCoatRoughness, dotNL );\n\t#else\n\t\tfloat clearCoatDHR = 0.0;\n\t#endif\n\treflectedLight.indirectSpecular += ( 1.0 - clearCoatDHR ) * radiance * BRDF_Specular_GGX_Environment( geometry, material.specularColor, material.specularRoughness );\n\t#ifndef STANDARD\n\t\treflectedLight.indirectSpecular += clearCoatRadiance * material.clearCoat * BRDF_Specular_GGX_Environment( geometry, vec3( DEFAULT_SPECULAR_COEFFICIENT ), material.clearCoatRoughness );\n\t#endif\n}\n#define RE_Direct\t\t\t\tRE_Direct_Physical\n#define RE_Direct_RectArea\t\tRE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse\t\tRE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular\t\tRE_IndirectSpecular_Physical\n#define Material_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.specularRoughness )\n#define Material_ClearCoat_BlinnShininessExponent( material ) GGXRoughnessToBlinnExponent( material.clearCoatRoughness )\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n\treturn saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}\n",lights_template:"\nGeometricContext geometry;\ngeometry.position = - vViewPosition;\ngeometry.normal = normal;\ngeometry.viewDir = normalize( vViewPosition );\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n\tPointLight pointLight;\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tgetPointDirectLightIrradiance( pointLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( pointLight.shadow, directLight.visible ) ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n\tSpotLight spotLight;\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tgetSpotDirectLightIrradiance( spotLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( spotLight.shadow, directLight.visible ) ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n\tDirectionalLight directionalLight;\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tgetDirectionalDirectLightIrradiance( directionalLight, geometry, directLight );\n\t\t#ifdef USE_SHADOWMAP\n\t\tdirectLight.color *= all( bvec2( directionalLight.shadow, directLight.visible ) ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t\t#endif\n\t\tRE_Direct( directLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n\tRectAreaLight rectAreaLight;\n\tfor ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n\t\trectAreaLight = rectAreaLights[ i ];\n\t\tRE_Direct_RectArea( rectAreaLight, geometry, material, reflectedLight );\n\t}\n#endif\n#if defined( RE_IndirectDiffuse )\n\tvec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n\t#ifdef USE_LIGHTMAP\n\t\tvec3 lightMapIrradiance = texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t\t#ifndef PHYSICALLY_CORRECT_LIGHTS\n\t\t\tlightMapIrradiance *= PI;\n\t\t#endif\n\t\tirradiance += lightMapIrradiance;\n\t#endif\n\t#if ( NUM_HEMI_LIGHTS > 0 )\n\t\tfor ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n\t\t\tirradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometry );\n\t\t}\n\t#endif\n\t#if defined( USE_ENVMAP ) && defined( PHYSICAL ) && defined( ENVMAP_TYPE_CUBE_UV )\n\t\tirradiance += getLightProbeIndirectIrradiance( geometry, 8 );\n\t#endif\n\tRE_IndirectDiffuse( irradiance, geometry, material, reflectedLight );\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n\tvec3 radiance = getLightProbeIndirectRadiance( geometry, Material_BlinnShininessExponent( material ), 8 );\n\t#ifndef STANDARD\n\t\tvec3 clearCoatRadiance = getLightProbeIndirectRadiance( geometry, Material_ClearCoat_BlinnShininessExponent( material ), 8 );\n\t#else\n\t\tvec3 clearCoatRadiance = vec3( 0.0 );\n\t#endif\n\tRE_IndirectSpecular( radiance, clearCoatRadiance, geometry, material, reflectedLight );\n#endif\n",logdepthbuf_fragment:"#if defined(USE_LOGDEPTHBUF) && defined(USE_LOGDEPTHBUF_EXT)\n\tgl_FragDepthEXT = log2(vFragDepth) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#ifdef USE_LOGDEPTHBUF\n\tuniform float logDepthBufFC;\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n#endif\n",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvarying float vFragDepth;\n\t#endif\n\tuniform float logDepthBufFC;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n\tgl_Position.z = log2(max( EPSILON, gl_Position.w + 1.0 )) * logDepthBufFC;\n\t#ifdef USE_LOGDEPTHBUF_EXT\n\t\tvFragDepth = 1.0 + gl_Position.w;\n\t#else\n\t\tgl_Position.z = (gl_Position.z - 1.0) * gl_Position.w;\n\t#endif\n#endif\n",map_fragment:"#ifdef USE_MAP\n\tvec4 texelColor = texture2D( map, vUv );\n\ttexelColor = mapTexelToLinear( texelColor );\n\tdiffuseColor *= texelColor;\n#endif\n",map_pars_fragment:"#ifdef USE_MAP\n\tuniform sampler2D map;\n#endif\n",map_particle_fragment:"#ifdef USE_MAP\n\tvec4 mapTexel = texture2D( map, vec2( gl_PointCoord.x, 1.0 - gl_PointCoord.y ) * offsetRepeat.zw + offsetRepeat.xy );\n\tdiffuseColor *= mapTexelToLinear( mapTexel );\n#endif\n",map_particle_pars_fragment:"#ifdef USE_MAP\n\tuniform vec4 offsetRepeat;\n\tuniform sampler2D map;\n#endif\n",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n\tvec4 texelMetalness = texture2D( metalnessMap, vUv );\n\tmetalnessFactor *= texelMetalness.b;\n#endif\n",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n\tuniform sampler2D metalnessMap;\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n\tobjectNormal += ( morphNormal0 - normal ) * morphTargetInfluences[ 0 ];\n\tobjectNormal += ( morphNormal1 - normal ) * morphTargetInfluences[ 1 ];\n\tobjectNormal += ( morphNormal2 - normal ) * morphTargetInfluences[ 2 ];\n\tobjectNormal += ( morphNormal3 - normal ) * morphTargetInfluences[ 3 ];\n#endif\n",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n\t#ifndef USE_MORPHNORMALS\n\tuniform float morphTargetInfluences[ 8 ];\n\t#else\n\tuniform float morphTargetInfluences[ 4 ];\n\t#endif\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n\ttransformed += ( morphTarget0 - position ) * morphTargetInfluences[ 0 ];\n\ttransformed += ( morphTarget1 - position ) * morphTargetInfluences[ 1 ];\n\ttransformed += ( morphTarget2 - position ) * morphTargetInfluences[ 2 ];\n\ttransformed += ( morphTarget3 - position ) * morphTargetInfluences[ 3 ];\n\t#ifndef USE_MORPHNORMALS\n\ttransformed += ( morphTarget4 - position ) * morphTargetInfluences[ 4 ];\n\ttransformed += ( morphTarget5 - position ) * morphTargetInfluences[ 5 ];\n\ttransformed += ( morphTarget6 - position ) * morphTargetInfluences[ 6 ];\n\ttransformed += ( morphTarget7 - position ) * morphTargetInfluences[ 7 ];\n\t#endif\n#endif\n",normal_flip:"#ifdef DOUBLE_SIDED\n\tfloat flipNormal = ( float( gl_FrontFacing ) * 2.0 - 1.0 );\n#else\n\tfloat flipNormal = 1.0;\n#endif\n",normal_fragment:"#ifdef FLAT_SHADED\n\tvec3 fdx = vec3( dFdx( vViewPosition.x ), dFdx( vViewPosition.y ), dFdx( vViewPosition.z ) );\n\tvec3 fdy = vec3( dFdy( vViewPosition.x ), dFdy( vViewPosition.y ), dFdy( vViewPosition.z ) );\n\tvec3 normal = normalize( cross( fdx, fdy ) );\n#else\n\tvec3 normal = normalize( vNormal ) * flipNormal;\n#endif\n#ifdef USE_NORMALMAP\n\tnormal = perturbNormal2Arb( -vViewPosition, normal );\n#elif defined( USE_BUMPMAP )\n\tnormal = perturbNormalArb( -vViewPosition, normal, dHdxy_fwd() );\n#endif\n",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n\tuniform sampler2D normalMap;\n\tuniform vec2 normalScale;\n\tvec3 perturbNormal2Arb( vec3 eye_pos, vec3 surf_norm ) {\n\t\tvec3 q0 = vec3( dFdx( eye_pos.x ), dFdx( eye_pos.y ), dFdx( eye_pos.z ) );\n\t\tvec3 q1 = vec3( dFdy( eye_pos.x ), dFdy( eye_pos.y ), dFdy( eye_pos.z ) );\n\t\tvec2 st0 = dFdx( vUv.st );\n\t\tvec2 st1 = dFdy( vUv.st );\n\t\tvec3 S = normalize( q0 * st1.t - q1 * st0.t );\n\t\tvec3 T = normalize( -q0 * st1.s + q1 * st0.s );\n\t\tvec3 N = normalize( surf_norm );\n\t\tvec3 mapN = texture2D( normalMap, vUv ).xyz * 2.0 - 1.0;\n\t\tmapN.xy = normalScale * mapN.xy;\n\t\tmat3 tsn = mat3( S, T, N );\n\t\treturn normalize( tsn * mapN );\n\t}\n#endif\n",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n\treturn normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n\treturn 1.0 - 2.0 * rgb.xyz;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;\nconst vec3 PackFactors = vec3( 256. * 256. * 256., 256. * 256., 256. );\nconst vec4 UnpackFactors = UnpackDownscale / vec4( PackFactors, 1. );\nconst float ShiftRight8 = 1. / 256.;\nvec4 packDepthToRGBA( const in float v ) {\n\tvec4 r = vec4( fract( v * PackFactors ), v );\n\tr.yzw -= r.xyz * ShiftRight8;\treturn r * PackUpscale;\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n\treturn dot( v, UnpackFactors );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float linearClipZ, const in float near, const in float far ) {\n\treturn linearClipZ * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n\treturn (( near + viewZ ) * far ) / (( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float invClipZ, const in float near, const in float far ) {\n\treturn ( near * far ) / ( ( far - near ) * invClipZ - far );\n}\n",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n\tgl_FragColor.rgb *= gl_FragColor.a;\n#endif\n",project_vertex:"vec4 mvPosition = modelViewMatrix * vec4( transformed, 1.0 );\ngl_Position = projectionMatrix * mvPosition;\n",dithering_fragment:"#if defined( DITHERING )\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif\n",dithering_pars_fragment:"#if defined( DITHERING )\n\tvec3 dithering( vec3 color ) {\n\t\tfloat grid_position = rand( gl_FragCoord.xy );\n\t\tvec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n\t\tdither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n\t\treturn color + dither_shift_RGB;\n\t}\n#endif\n",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n\tvec4 texelRoughness = texture2D( roughnessMap, vUv );\n\troughnessFactor *= texelRoughness.g;\n#endif\n",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n\tuniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform sampler2D directionalShadowMap[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform sampler2D spotShadowMap[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform sampler2D pointShadowMap[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n\tfloat texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n\t\treturn step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n\t}\n\tfloat texture2DShadowLerp( sampler2D depths, vec2 size, vec2 uv, float compare ) {\n\t\tconst vec2 offset = vec2( 0.0, 1.0 );\n\t\tvec2 texelSize = vec2( 1.0 ) / size;\n\t\tvec2 centroidUV = floor( uv * size + 0.5 ) / size;\n\t\tfloat lb = texture2DCompare( depths, centroidUV + texelSize * offset.xx, compare );\n\t\tfloat lt = texture2DCompare( depths, centroidUV + texelSize * offset.xy, compare );\n\t\tfloat rb = texture2DCompare( depths, centroidUV + texelSize * offset.yx, compare );\n\t\tfloat rt = texture2DCompare( depths, centroidUV + texelSize * offset.yy, compare );\n\t\tvec2 f = fract( uv * size + 0.5 );\n\t\tfloat a = mix( lb, lt, f.y );\n\t\tfloat b = mix( rb, rt, f.y );\n\t\tfloat c = mix( a, b, f.x );\n\t\treturn c;\n\t}\n\tfloat getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tfloat shadow = 1.0;\n\t\tshadowCoord.xyz /= shadowCoord.w;\n\t\tshadowCoord.z += shadowBias;\n\t\tbvec4 inFrustumVec = bvec4 ( shadowCoord.x >= 0.0, shadowCoord.x <= 1.0, shadowCoord.y >= 0.0, shadowCoord.y <= 1.0 );\n\t\tbool inFrustum = all( inFrustumVec );\n\t\tbvec2 frustumTestVec = bvec2( inFrustum, shadowCoord.z <= 1.0 );\n\t\tbool frustumTest = all( frustumTestVec );\n\t\tif ( frustumTest ) {\n\t\t#if defined( SHADOWMAP_TYPE_PCF )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n\t\t\tfloat dx0 = - texelSize.x * shadowRadius;\n\t\t\tfloat dy0 = - texelSize.y * shadowRadius;\n\t\t\tfloat dx1 = + texelSize.x * shadowRadius;\n\t\t\tfloat dy1 = + texelSize.y * shadowRadius;\n\t\t\tshadow = (\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy, shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n\t\t\t\ttexture2DShadowLerp( shadowMap, shadowMapSize, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\tshadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n\t\t#endif\n\t\t}\n\t\treturn shadow;\n\t}\n\tvec2 cubeToUV( vec3 v, float texelSizeY ) {\n\t\tvec3 absV = abs( v );\n\t\tfloat scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n\t\tabsV *= scaleToCube;\n\t\tv *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n\t\tvec2 planar = v.xy;\n\t\tfloat almostATexel = 1.5 * texelSizeY;\n\t\tfloat almostOne = 1.0 - almostATexel;\n\t\tif ( absV.z >= almostOne ) {\n\t\t\tif ( v.z > 0.0 )\n\t\t\t\tplanar.x = 4.0 - v.x;\n\t\t} else if ( absV.x >= almostOne ) {\n\t\t\tfloat signX = sign( v.x );\n\t\t\tplanar.x = v.z * signX + 2.0 * signX;\n\t\t} else if ( absV.y >= almostOne ) {\n\t\t\tfloat signY = sign( v.y );\n\t\t\tplanar.x = v.x + 2.0 * signY + 2.0;\n\t\t\tplanar.y = v.z * signY - 2.0;\n\t\t}\n\t\treturn vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n\t}\n\tfloat getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n\t\tvec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n\t\tvec3 lightToPosition = shadowCoord.xyz;\n\t\tvec3 bd3D = normalize( lightToPosition );\n\t\tfloat dp = ( length( lightToPosition ) - shadowBias ) / 1000.0;\n\t\t#if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT )\n\t\t\tvec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n\t\t\treturn (\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n\t\t\t\ttexture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n\t\t\t) * ( 1.0 / 9.0 );\n\t\t#else\n\t\t\treturn texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n\t\t#endif\n\t}\n#endif\n",shadowmap_pars_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\t\tuniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHTS ];\n\t\tvarying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHTS ];\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\t\tuniform mat4 spotShadowMatrix[ NUM_SPOT_LIGHTS ];\n\t\tvarying vec4 vSpotShadowCoord[ NUM_SPOT_LIGHTS ];\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\t\tuniform mat4 pointShadowMatrix[ NUM_POINT_LIGHTS ];\n\t\tvarying vec4 vPointShadowCoord[ NUM_POINT_LIGHTS ];\n\t#endif\n#endif\n",shadowmap_vertex:"#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tvDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tvSpotShadowCoord[ i ] = spotShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tvPointShadowCoord[ i ] = pointShadowMatrix[ i ] * worldPosition;\n\t}\n\t#endif\n#endif\n",shadowmask_pars_fragment:"float getShadowMask() {\n\tfloat shadow = 1.0;\n\t#ifdef USE_SHADOWMAP\n\t#if NUM_DIR_LIGHTS > 0\n\tDirectionalLight directionalLight;\n\tfor ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n\t\tdirectionalLight = directionalLights[ i ];\n\t\tshadow *= bool( directionalLight.shadow ) ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_SPOT_LIGHTS > 0\n\tSpotLight spotLight;\n\tfor ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n\t\tspotLight = spotLights[ i ];\n\t\tshadow *= bool( spotLight.shadow ) ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowBias, spotLight.shadowRadius, vSpotShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#if NUM_POINT_LIGHTS > 0\n\tPointLight pointLight;\n\tfor ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n\t\tpointLight = pointLights[ i ];\n\t\tshadow *= bool( pointLight.shadow ) ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ] ) : 1.0;\n\t}\n\t#endif\n\t#endif\n\treturn shadow;\n}\n",skinbase_vertex:"#ifdef USE_SKINNING\n\tmat4 boneMatX = getBoneMatrix( skinIndex.x );\n\tmat4 boneMatY = getBoneMatrix( skinIndex.y );\n\tmat4 boneMatZ = getBoneMatrix( skinIndex.z );\n\tmat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n\tuniform mat4 bindMatrix;\n\tuniform mat4 bindMatrixInverse;\n\t#ifdef BONE_TEXTURE\n\t\tuniform sampler2D boneTexture;\n\t\tuniform int boneTextureSize;\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tfloat j = i * 4.0;\n\t\t\tfloat x = mod( j, float( boneTextureSize ) );\n\t\t\tfloat y = floor( j / float( boneTextureSize ) );\n\t\t\tfloat dx = 1.0 / float( boneTextureSize );\n\t\t\tfloat dy = 1.0 / float( boneTextureSize );\n\t\t\ty = dy * ( y + 0.5 );\n\t\t\tvec4 v1 = texture2D( boneTexture, vec2( dx * ( x + 0.5 ), y ) );\n\t\t\tvec4 v2 = texture2D( boneTexture, vec2( dx * ( x + 1.5 ), y ) );\n\t\t\tvec4 v3 = texture2D( boneTexture, vec2( dx * ( x + 2.5 ), y ) );\n\t\t\tvec4 v4 = texture2D( boneTexture, vec2( dx * ( x + 3.5 ), y ) );\n\t\t\tmat4 bone = mat4( v1, v2, v3, v4 );\n\t\t\treturn bone;\n\t\t}\n\t#else\n\t\tuniform mat4 boneMatrices[ MAX_BONES ];\n\t\tmat4 getBoneMatrix( const in float i ) {\n\t\t\tmat4 bone = boneMatrices[ int(i) ];\n\t\t\treturn bone;\n\t\t}\n\t#endif\n#endif\n",skinning_vertex:"#ifdef USE_SKINNING\n\tvec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n\tvec4 skinned = vec4( 0.0 );\n\tskinned += boneMatX * skinVertex * skinWeight.x;\n\tskinned += boneMatY * skinVertex * skinWeight.y;\n\tskinned += boneMatZ * skinVertex * skinWeight.z;\n\tskinned += boneMatW * skinVertex * skinWeight.w;\n\ttransformed = ( bindMatrixInverse * skinned ).xyz;\n#endif\n",skinnormal_vertex:"#ifdef USE_SKINNING\n\tmat4 skinMatrix = mat4( 0.0 );\n\tskinMatrix += skinWeight.x * boneMatX;\n\tskinMatrix += skinWeight.y * boneMatY;\n\tskinMatrix += skinWeight.z * boneMatZ;\n\tskinMatrix += skinWeight.w * boneMatW;\n\tskinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n\tobjectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n#endif\n",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n\tvec4 texelSpecular = texture2D( specularMap, vUv );\n\tspecularStrength = texelSpecular.r;\n#else\n\tspecularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n\tuniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif\n",tonemapping_pars_fragment:"#define saturate(a) clamp( a, 0.0, 1.0 )\nuniform float toneMappingExposure;\nuniform float toneMappingWhitePoint;\nvec3 LinearToneMapping( vec3 color ) {\n\treturn toneMappingExposure * color;\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( color / ( vec3( 1.0 ) + color ) );\n}\n#define Uncharted2Helper( x ) max( ( ( x * ( 0.15 * x + 0.10 * 0.50 ) + 0.20 * 0.02 ) / ( x * ( 0.15 * x + 0.50 ) + 0.20 * 0.30 ) ) - 0.02 / 0.30, vec3( 0.0 ) )\nvec3 Uncharted2ToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\treturn saturate( Uncharted2Helper( color ) / Uncharted2Helper( vec3( toneMappingWhitePoint ) ) );\n}\nvec3 OptimizedCineonToneMapping( vec3 color ) {\n\tcolor *= toneMappingExposure;\n\tcolor = max( vec3( 0.0 ), color - 0.004 );\n\treturn pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\n",uv_pars_fragment:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n#endif",uv_pars_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvarying vec2 vUv;\n\tuniform vec4 offsetRepeat;\n#endif\n",uv_vertex:"#if defined( USE_MAP ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( USE_SPECULARMAP ) || defined( USE_ALPHAMAP ) || defined( USE_EMISSIVEMAP ) || defined( USE_ROUGHNESSMAP ) || defined( USE_METALNESSMAP )\n\tvUv = uv * offsetRepeat.zw + offsetRepeat.xy;\n#endif",uv2_pars_fragment:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvarying vec2 vUv2;\n#endif",uv2_pars_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tattribute vec2 uv2;\n\tvarying vec2 vUv2;\n#endif",uv2_vertex:"#if defined( USE_LIGHTMAP ) || defined( USE_AOMAP )\n\tvUv2 = uv2;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( PHONG ) || defined( PHYSICAL ) || defined( LAMBERT ) || defined ( USE_SHADOWMAP )\n\tvec4 worldPosition = modelMatrix * vec4( transformed, 1.0 );\n#endif\n",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldPosition;\n#include \nvoid main() {\n\tgl_FragColor = textureCube( tCube, vec3( tFlip * vWorldPosition.x, vWorldPosition.yz ) );\n\tgl_FragColor.a *= opacity;\n}\n",cube_vert:"varying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}\n",depth_frag:"#if DEPTH_PACKING == 3200\n\tuniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( 1.0 );\n\t#if DEPTH_PACKING == 3200\n\t\tdiffuseColor.a = opacity;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#if DEPTH_PACKING == 3200\n\t\tgl_FragColor = vec4( vec3( gl_FragCoord.z ), opacity );\n\t#elif DEPTH_PACKING == 3201\n\t\tgl_FragColor = packDepthToRGBA( gl_FragCoord.z );\n\t#endif\n}\n",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#ifdef USE_DISPLACEMENTMAP\n\t\t#include \n\t\t#include \n\t\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",distanceRGBA_frag:"uniform vec3 lightPos;\nvarying vec4 vWorldPosition;\n#include \n#include \n#include \nvoid main () {\n\t#include \n\tgl_FragColor = packDepthToRGBA( length( vWorldPosition.xyz - lightPos.xyz ) / 1000.0 );\n}\n",distanceRGBA_vert:"varying vec4 vWorldPosition;\n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvWorldPosition = worldPosition;\n}\n",equirect_frag:"uniform sampler2D tEquirect;\nuniform float tFlip;\nvarying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvec3 direction = normalize( vWorldPosition );\n\tvec2 sampleUV;\n\tsampleUV.y = saturate( tFlip * direction.y * -0.5 + 0.5 );\n\tsampleUV.x = atan( direction.z, direction.x ) * RECIPROCAL_PI2 + 0.5;\n\tgl_FragColor = texture2D( tEquirect, sampleUV );\n}\n",equirect_vert:"varying vec3 vWorldPosition;\n#include \nvoid main() {\n\tvWorldPosition = transformDirection( position, modelMatrix );\n\t#include \n\t#include \n}\n",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tif ( mod( vLineDistance, totalSize ) > dashSize ) {\n\t\tdiscard;\n\t}\n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvLineDistance = scale * lineDistance;\n\tvec4 mvPosition = modelViewMatrix * vec4( position, 1.0 );\n\tgl_Position = projectionMatrix * mvPosition;\n\t#include \n\t#include \n\t#include \n}\n",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\t#ifdef USE_LIGHTMAP\n\t\treflectedLight.indirectDiffuse += texture2D( lightMap, vUv2 ).xyz * lightMapIntensity;\n\t#else\n\t\treflectedLight.indirectDiffuse += vec3( 1.0 );\n\t#endif\n\t#include \n\treflectedLight.indirectDiffuse *= diffuseColor.rgb;\n\tvec3 outgoingLight = reflectedLight.indirectDiffuse;\n\t#include \n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#ifdef USE_ENVMAP\n\t#include \n\t#include \n\t#include \n\t#include \n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshlambert_frag:"uniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\treflectedLight.indirectDiffuse = getAmbientLightIrradiance( ambientLightColor );\n\t#include \n\treflectedLight.indirectDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb );\n\t#ifdef DOUBLE_SIDED\n\t\treflectedLight.directDiffuse = ( gl_FrontFacing ) ? vLightFront : vLightBack;\n\t#else\n\t\treflectedLight.directDiffuse = vLightFront;\n\t#endif\n\treflectedLight.directDiffuse *= BRDF_Diffuse_Lambert( diffuseColor.rgb ) * getShadowMask();\n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n\t#include \n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshlambert_vert:"#define LAMBERT\nvarying vec3 vLightFront;\n#ifdef DOUBLE_SIDED\n\tvarying vec3 vLightBack;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\t#include \n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshphysical_frag:"#define PHYSICAL\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifndef STANDARD\n\tuniform float clearCoat;\n\tuniform float clearCoatRoughness;\n#endif\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\tReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n\tvec3 totalEmissiveRadiance = emissive;\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",meshphysical_vert:"#define PHYSICAL\nvarying vec3 vViewPosition;\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\tvViewPosition = - mvPosition.xyz;\n\t#include \n\t#include \n\t#include \n}\n",normal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\tgl_FragColor = vec4( packNormalToRGB( normal ), opacity );\n}\n",normal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvarying vec3 vViewPosition;\n#endif\n#ifndef FLAT_SHADED\n\tvarying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#ifndef FLAT_SHADED\n\tvNormal = normalize( transformedNormal );\n#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP )\n\tvViewPosition = - mvPosition.xyz;\n#endif\n}\n",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\tvec3 outgoingLight = vec3( 0.0 );\n\tvec4 diffuseColor = vec4( diffuse, opacity );\n\t#include \n\t#include \n\t#include \n\t#include \n\toutgoingLight = diffuseColor.rgb;\n\tgl_FragColor = vec4( outgoingLight, diffuseColor.a );\n\t#include \n\t#include \n\t#include \n\t#include \n}\n",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#ifdef USE_SIZEATTENUATION\n\t\tgl_PointSize = size * ( scale / - mvPosition.z );\n\t#else\n\t\tgl_PointSize = size;\n\t#endif\n\t#include \n\t#include \n\t#include \n\t#include \n\t#include \n}\n",shadow_frag:"uniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n\tgl_FragColor = vec4( 0.0, 0.0, 0.0, opacity * ( 1.0 - getShadowMask() ) );\n}\n",shadow_vert:"#include \nvoid main() {\n\t#include \n\t#include \n\t#include \n\t#include \n}\n"},Dn={basic:{uniforms:Un.merge([On.common,On.aomap,On.lightmap,On.fog]),vertexShader:Nn.meshbasic_vert,fragmentShader:Nn.meshbasic_frag},lambert:{uniforms:Un.merge([On.common,On.aomap,On.lightmap,On.emissivemap,On.fog,On.lights,{emissive:{value:new In(0)}}]),vertexShader:Nn.meshlambert_vert,fragmentShader:Nn.meshlambert_frag},phong:{uniforms:Un.merge([On.common,On.aomap,On.lightmap,On.emissivemap,On.bumpmap,On.normalmap,On.displacementmap,On.gradientmap,On.fog,On.lights,{emissive:{value:new In(0)},specular:{value:new In(1118481)},shininess:{value:30}}]),vertexShader:Nn.meshphong_vert,fragmentShader:Nn.meshphong_frag},standard:{uniforms:Un.merge([On.common,On.aomap,On.lightmap,On.emissivemap,On.bumpmap,On.normalmap,On.displacementmap,On.roughnessmap,On.metalnessmap,On.fog,On.lights,{emissive:{value:new In(0)},roughness:{value:.5},metalness:{value:.5},envMapIntensity:{value:1}}]),vertexShader:Nn.meshphysical_vert,fragmentShader:Nn.meshphysical_frag},points:{uniforms:Un.merge([On.points,On.fog]),vertexShader:Nn.points_vert,fragmentShader:Nn.points_frag},dashed:{uniforms:Un.merge([On.common,On.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:Nn.linedashed_vert,fragmentShader:Nn.linedashed_frag},depth:{uniforms:Un.merge([On.common,On.displacementmap]),vertexShader:Nn.depth_vert,fragmentShader:Nn.depth_frag},normal:{uniforms:Un.merge([On.common,On.bumpmap,On.normalmap,On.displacementmap,{opacity:{value:1}}]),vertexShader:Nn.normal_vert,fragmentShader:Nn.normal_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:Nn.cube_vert,fragmentShader:Nn.cube_frag},equirect:{uniforms:{tEquirect:{value:null},tFlip:{value:-1}},vertexShader:Nn.equirect_vert,fragmentShader:Nn.equirect_frag},distanceRGBA:{uniforms:{lightPos:{value:new He}},vertexShader:Nn.distanceRGBA_vert,fragmentShader:Nn.distanceRGBA_frag}};function Fn(t,e){this.min=void 0!==t?t:new Re(1/0,1/0),this.max=void 0!==e?e:new Re(-1/0,-1/0)}function Bn(t,e){var n,r,i,o,a,s,c,u,l=t.context,h=t.state;function f(){var e=new Float32Array([-1,-1,0,0,1,-1,1,0,1,1,1,1,-1,1,0,1]),f=new Uint16Array([0,1,2,0,2,3]);n=l.createBuffer(),r=l.createBuffer(),l.bindBuffer(l.ARRAY_BUFFER,n),l.bufferData(l.ARRAY_BUFFER,e,l.STATIC_DRAW),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,r),l.bufferData(l.ELEMENT_ARRAY_BUFFER,f,l.STATIC_DRAW),c=l.createTexture(),u=l.createTexture(),h.bindTexture(l.TEXTURE_2D,c),l.texImage2D(l.TEXTURE_2D,0,l.RGB,16,16,0,l.RGB,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),h.bindTexture(l.TEXTURE_2D,u),l.texImage2D(l.TEXTURE_2D,0,l.RGBA,16,16,0,l.RGBA,l.UNSIGNED_BYTE,null),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_S,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_WRAP_T,l.CLAMP_TO_EDGE),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MAG_FILTER,l.NEAREST),l.texParameteri(l.TEXTURE_2D,l.TEXTURE_MIN_FILTER,l.NEAREST),i={vertexShader:["uniform lowp int renderType;","uniform vec3 screenPosition;","uniform vec2 scale;","uniform float rotation;","uniform sampler2D occlusionMap;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","varying float vVisibility;","void main() {","vUV = uv;","vec2 pos = position;","if ( renderType == 2 ) {","vec4 visibility = texture2D( occlusionMap, vec2( 0.1, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.1 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.9, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.9 ) );","visibility += texture2D( occlusionMap, vec2( 0.1, 0.5 ) );","visibility += texture2D( occlusionMap, vec2( 0.5, 0.5 ) );","vVisibility = visibility.r / 9.0;","vVisibility *= 1.0 - visibility.g / 9.0;","vVisibility *= visibility.b / 9.0;","vVisibility *= 1.0 - visibility.a / 9.0;","pos.x = cos( rotation ) * position.x - sin( rotation ) * position.y;","pos.y = sin( rotation ) * position.x + cos( rotation ) * position.y;","}","gl_Position = vec4( ( pos * scale + screenPosition.xy ).xy, screenPosition.z, 1.0 );","}"].join("\n"),fragmentShader:["uniform lowp int renderType;","uniform sampler2D map;","uniform float opacity;","uniform vec3 color;","varying vec2 vUV;","varying float vVisibility;","void main() {","if ( renderType == 0 ) {","gl_FragColor = vec4( 1.0, 0.0, 1.0, 0.0 );","} else if ( renderType == 1 ) {","gl_FragColor = texture2D( map, vUV );","} else {","vec4 texture = texture2D( map, vUV );","texture.a *= opacity * vVisibility;","gl_FragColor = texture;","gl_FragColor.rgb *= color;","}","}"].join("\n")},o=function(e){var n=l.createProgram(),r=l.createShader(l.FRAGMENT_SHADER),i=l.createShader(l.VERTEX_SHADER),o="precision "+t.getPrecision()+" float;\n";return l.shaderSource(r,o+e.fragmentShader),l.shaderSource(i,o+e.vertexShader),l.compileShader(r),l.compileShader(i),l.attachShader(n,r),l.attachShader(n,i),l.linkProgram(n),n}(i),a={vertex:l.getAttribLocation(o,"position"),uv:l.getAttribLocation(o,"uv")},s={renderType:l.getUniformLocation(o,"renderType"),map:l.getUniformLocation(o,"map"),occlusionMap:l.getUniformLocation(o,"occlusionMap"),opacity:l.getUniformLocation(o,"opacity"),color:l.getUniformLocation(o,"color"),scale:l.getUniformLocation(o,"scale"),rotation:l.getUniformLocation(o,"rotation"),screenPosition:l.getUniformLocation(o,"screenPosition")}}this.render=function(i,d,p){if(0!==e.length){var m=new He,g=p.w/p.z,v=.5*p.z,y=.5*p.w,x=16/p.w,_=new Re(x*g,x),b=new He(1,1,0),w=new Re(1,1),M=new Fn;M.min.set(p.x,p.y),M.max.set(p.x+(p.z-16),p.y+(p.w-16)),void 0===o&&f(),l.useProgram(o),h.initAttributes(),h.enableAttribute(a.vertex),h.enableAttribute(a.uv),h.disableUnusedAttributes(),l.uniform1i(s.occlusionMap,0),l.uniform1i(s.map,1),l.bindBuffer(l.ARRAY_BUFFER,n),l.vertexAttribPointer(a.vertex,2,l.FLOAT,!1,16,0),l.vertexAttribPointer(a.uv,2,l.FLOAT,!1,16,8),l.bindBuffer(l.ELEMENT_ARRAY_BUFFER,r),h.disable(l.CULL_FACE),h.buffers.depth.setMask(!1);for(var E=0,T=e.length;E.001&&L.scale>.001&&(b.x=L.x,b.y=L.y,b.z=L.z,x=L.size*L.scale/p.w,_.x=x*g,_.y=x,l.uniform3f(s.screenPosition,b.x,b.y,b.z),l.uniform2f(s.scale,_.x,_.y),l.uniform1f(s.rotation,L.rotation),l.uniform1f(s.opacity,L.opacity),l.uniform3f(s.color,L.color.r,L.color.g,L.color.b),h.setBlending(L.blending,L.blendEquation,L.blendSrc,L.blendDst),t.setTexture2D(L.texture,1),l.drawElements(l.TRIANGLES,6,l.UNSIGNED_SHORT,0))}}}h.enable(l.CULL_FACE),h.enable(l.DEPTH_TEST),h.buffers.depth.setMask(!0),t.resetGLState()}}}function zn(t,e){var n,r,i,o,a,s,c=t.context,u=t.state,l=new He,h=new Ge,f=new He;function d(){var e=new Float32Array([-.5,-.5,0,0,.5,-.5,1,0,.5,.5,1,1,-.5,.5,0,1]),u=new Uint16Array([0,1,2,0,2,3]);n=c.createBuffer(),r=c.createBuffer(),c.bindBuffer(c.ARRAY_BUFFER,n),c.bufferData(c.ARRAY_BUFFER,e,c.STATIC_DRAW),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,r),c.bufferData(c.ELEMENT_ARRAY_BUFFER,u,c.STATIC_DRAW),i=function(){var e=c.createProgram(),n=c.createShader(c.VERTEX_SHADER),r=c.createShader(c.FRAGMENT_SHADER);return c.shaderSource(n,["precision "+t.getPrecision()+" float;","#define SHADER_NAME SpriteMaterial","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform float rotation;","uniform vec2 scale;","uniform vec2 uvOffset;","uniform vec2 uvScale;","attribute vec2 position;","attribute vec2 uv;","varying vec2 vUV;","void main() {","vUV = uvOffset + uv * uvScale;","vec2 alignedPosition = position * scale;","vec2 rotatedPosition;","rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;","rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;","vec4 finalPosition;","finalPosition = modelViewMatrix * vec4( 0.0, 0.0, 0.0, 1.0 );","finalPosition.xy += rotatedPosition;","finalPosition = projectionMatrix * finalPosition;","gl_Position = finalPosition;","}"].join("\n")),c.shaderSource(r,["precision "+t.getPrecision()+" float;","#define SHADER_NAME SpriteMaterial","uniform vec3 color;","uniform sampler2D map;","uniform float opacity;","uniform int fogType;","uniform vec3 fogColor;","uniform float fogDensity;","uniform float fogNear;","uniform float fogFar;","uniform float alphaTest;","varying vec2 vUV;","void main() {","vec4 texture = texture2D( map, vUV );","if ( texture.a < alphaTest ) discard;","gl_FragColor = vec4( color * texture.xyz, texture.a * opacity );","if ( fogType > 0 ) {","float depth = gl_FragCoord.z / gl_FragCoord.w;","float fogFactor = 0.0;","if ( fogType == 1 ) {","fogFactor = smoothstep( fogNear, fogFar, depth );","} else {","const float LOG2 = 1.442695;","fogFactor = exp2( - fogDensity * fogDensity * depth * depth * LOG2 );","fogFactor = 1.0 - clamp( fogFactor, 0.0, 1.0 );","}","gl_FragColor = mix( gl_FragColor, vec4( fogColor, gl_FragColor.w ), fogFactor );","}","}"].join("\n")),c.compileShader(n),c.compileShader(r),c.attachShader(e,n),c.attachShader(e,r),c.linkProgram(e),e}(),o={position:c.getAttribLocation(i,"position"),uv:c.getAttribLocation(i,"uv")},a={uvOffset:c.getUniformLocation(i,"uvOffset"),uvScale:c.getUniformLocation(i,"uvScale"),rotation:c.getUniformLocation(i,"rotation"),scale:c.getUniformLocation(i,"scale"),color:c.getUniformLocation(i,"color"),map:c.getUniformLocation(i,"map"),opacity:c.getUniformLocation(i,"opacity"),modelViewMatrix:c.getUniformLocation(i,"modelViewMatrix"),projectionMatrix:c.getUniformLocation(i,"projectionMatrix"),fogType:c.getUniformLocation(i,"fogType"),fogDensity:c.getUniformLocation(i,"fogDensity"),fogNear:c.getUniformLocation(i,"fogNear"),fogFar:c.getUniformLocation(i,"fogFar"),fogColor:c.getUniformLocation(i,"fogColor"),alphaTest:c.getUniformLocation(i,"alphaTest")};var l=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");l.width=8,l.height=8;var h=l.getContext("2d");h.fillStyle="white",h.fillRect(0,0,8,8),(s=new De(l)).needsUpdate=!0}function p(t,e){return t.renderOrder!==e.renderOrder?t.renderOrder-e.renderOrder:t.z!==e.z?e.z-t.z:e.id-t.id}this.render=function(m,g){if(0!==e.length){void 0===i&&d(),c.useProgram(i),u.initAttributes(),u.enableAttribute(o.position),u.enableAttribute(o.uv),u.disableUnusedAttributes(),u.disable(c.CULL_FACE),u.enable(c.BLEND),c.bindBuffer(c.ARRAY_BUFFER,n),c.vertexAttribPointer(o.position,2,c.FLOAT,!1,16,0),c.vertexAttribPointer(o.uv,2,c.FLOAT,!1,16,8),c.bindBuffer(c.ELEMENT_ARRAY_BUFFER,r),c.uniformMatrix4fv(a.projectionMatrix,!1,g.projectionMatrix.elements),u.activeTexture(c.TEXTURE0),c.uniform1i(a.map,0);var v=0,y=0,x=m.fog;x?(c.uniform3f(a.fogColor,x.color.r,x.color.g,x.color.b),x.isFog?(c.uniform1f(a.fogNear,x.near),c.uniform1f(a.fogFar,x.far),c.uniform1i(a.fogType,1),v=1,y=1):x.isFogExp2&&(c.uniform1f(a.fogDensity,x.density),c.uniform1i(a.fogType,2),v=2,y=2)):(c.uniform1i(a.fogType,0),v=0,y=0);for(var _=0,b=e.length;_this.max.x||t.ythis.max.y)},containsBox:function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y},getParameter:function(t,e){return(e||new Re).set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y))},intersectsBox:function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y)},clampPoint:function(t,e){return(e||new Re).copy(t).clamp(this.min,this.max)},distanceToPoint:function(){var t=new Re;return function(e){return t.copy(e).clamp(this.min,this.max).sub(e).length()}}(),intersect:function(t){return this.min.max(t.min),this.max.min(t.max),this},union:function(t){return this.min.min(t.min),this.max.max(t.max),this},translate:function(t){return this.min.add(t),this.max.add(t),this},equals:function(t){return t.min.equals(this.min)&&t.max.equals(this.max)}});var Gn,Hn,kn,jn,Vn,Wn,Xn,qn=0;function Yn(){Object.defineProperty(this,"id",{value:qn++}),this.uuid=Ae.generateUUID(),this.name="",this.type="Material",this.fog=!0,this.lights=!0,this.blending=P,this.side=b,this.shading=T,this.vertexColors=S,this.opacity=1,this.transparent=!1,this.blendSrc=V,this.blendDst=W,this.blendEquation=N,this.blendSrcAlpha=null,this.blendDstAlpha=null,this.blendEquationAlpha=null,this.depthFunc=tt,this.depthTest=!0,this.depthWrite=!0,this.clippingPlanes=null,this.clipIntersection=!1,this.clipShadows=!1,this.colorWrite=!0,this.precision=null,this.polygonOffset=!1,this.polygonOffsetFactor=0,this.polygonOffsetUnits=0,this.dithering=!1,this.alphaTest=0,this.premultipliedAlpha=!1,this.overdraw=0,this.visible=!0,this.needsUpdate=!0}function Zn(t){Yn.call(this),this.type="ShaderMaterial",this.defines={},this.uniforms={},this.vertexShader="void main() {\n\tgl_Position = projectionMatrix * modelViewMatrix * vec4( position, 1.0 );\n}",this.fragmentShader="void main() {\n\tgl_FragColor = vec4( 1.0, 0.0, 0.0, 1.0 );\n}",this.linewidth=1,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.clipping=!1,this.skinning=!1,this.morphTargets=!1,this.morphNormals=!1,this.extensions={derivatives:!1,fragDepth:!1,drawBuffers:!1,shaderTextureLOD:!1},this.defaultAttributeValues={color:[1,1,1],uv:[0,0],uv2:[0,0]},this.index0AttributeName=void 0,void 0!==t&&(void 0!==t.attributes&&console.error("THREE.ShaderMaterial: attributes should now be defined in THREE.BufferGeometry instead."),this.setValues(t))}function Jn(t){Yn.call(this),this.type="MeshDepthMaterial",this.depthPacking=Te,this.skinning=!1,this.morphTargets=!1,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.fog=!1,this.lights=!1,this.setValues(t)}function Kn(t,e){this.min=void 0!==t?t:new He(1/0,1/0,1/0),this.max=void 0!==e?e:new He(-1/0,-1/0,-1/0)}function Qn(t,e){this.center=void 0!==t?t:new He,this.radius=void 0!==e?e:0}function $n(){this.elements=[1,0,0,0,1,0,0,0,1],arguments.length>0&&console.error("THREE.Matrix3: the constructor no longer reads arguments. use .set() instead.")}function tr(t,e){this.normal=void 0!==t?t:new He(1,0,0),this.constant=void 0!==e?e:0}function er(t,e,n,r,i,o){this.planes=[void 0!==t?t:new tr,void 0!==e?e:new tr,void 0!==n?n:new tr,void 0!==r?r:new tr,void 0!==i?i:new tr,void 0!==o?o:new tr]}function nr(t,e,n,r){var i=t.context,o=t.state,a=new er,s=new ke,c=e.shadows,u=new Re,l=new Re(r.maxTextureSize,r.maxTextureSize),h=new He,f=new He,d=1,p=2,m=1+(d|p),g=new Array(m),v=new Array(m),y={},_=[new He(1,0,0),new He(-1,0,0),new He(0,0,1),new He(0,0,-1),new He(0,1,0),new He(0,-1,0)],E=[new He(0,1,0),new He(0,1,0),new He(0,1,0),new He(0,1,0),new He(0,0,1),new He(0,0,-1)],T=[new Fe,new Fe,new Fe,new Fe,new Fe,new Fe],S=new Jn;S.depthPacking=Se,S.clipping=!0;for(var A=Dn.distanceRGBA,R=Un.clone(A.uniforms),L=0;L!==m;++L){var P=0!=(L&d),C=0!=(L&p),I=S.clone();I.morphTargets=P,I.skinning=C,g[L]=I;var O=new Zn({defines:{USE_SHADOWMAP:""},uniforms:R,vertexShader:A.vertexShader,fragmentShader:A.fragmentShader,morphTargets:P,skinning:C,clipping:!0});v[L]=O}var U=this;function N(e,n,r,i){var o=e.geometry,a=null,s=g,c=e.customDepthMaterial;if(r&&(s=v,c=e.customDistanceMaterial),c)a=c;else{var u=!1;n.morphTargets&&(o&&o.isBufferGeometry?u=o.morphAttributes&&o.morphAttributes.position&&o.morphAttributes.position.length>0:o&&o.isGeometry&&(u=o.morphTargets&&o.morphTargets.length>0)),e.isSkinnedMesh&&!1===n.skinning&&console.warn("THREE.WebGLShadowMap: THREE.SkinnedMesh with material.skinning set to false:",e);var l=e.isSkinnedMesh&&n.skinning,h=0;u&&(h|=d),l&&(h|=p),a=s[h]}if(t.localClippingEnabled&&!0===n.clipShadows&&0!==n.clippingPlanes.length){var f=a.uuid,m=n.uuid,x=y[f];void 0===x&&(x={},y[f]=x);var _=x[m];void 0===_&&(_=a.clone(),x[m]=_),a=_}a.visible=n.visible,a.wireframe=n.wireframe;var E=n.side;return U.renderSingleSided&&E==M&&(E=b),U.renderReverseSided&&(E===b?E=w:E===w&&(E=b)),a.side=E,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,r&&void 0!==a.uniforms.lightPos&&a.uniforms.lightPos.value.copy(i),a}function D(e,r,i,o){if(!1!==e.visible){if(e.layers.test(r.layers)&&(e.isMesh||e.isLine||e.isPoints)&&e.castShadow&&(!e.frustumCulled||a.intersectsObject(e))){e.modelViewMatrix.multiplyMatrices(i.matrixWorldInverse,e.matrixWorld);var s=n.update(e),c=e.material;if(Array.isArray(c))for(var u=s.groups,l=0,h=u.length;l0&&(n.alphaTest=this.alphaTest),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=this.premultipliedAlpha),!0===this.wireframe&&(n.wireframe=this.wireframe),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),n.skinning=this.skinning,n.morphTargets=this.morphTargets,n.dithering=this.dithering,e){var i=r(t.textures),o=r(t.images);i.length>0&&(n.textures=i),o.length>0&&(n.images=o)}return n},clone:function(){return(new this.constructor).copy(this)},copy:function(t){this.name=t.name,this.fog=t.fog,this.lights=t.lights,this.blending=t.blending,this.side=t.side,this.shading=t.shading,this.vertexColors=t.vertexColors,this.opacity=t.opacity,this.transparent=t.transparent,this.blendSrc=t.blendSrc,this.blendDst=t.blendDst,this.blendEquation=t.blendEquation,this.blendSrcAlpha=t.blendSrcAlpha,this.blendDstAlpha=t.blendDstAlpha,this.blendEquationAlpha=t.blendEquationAlpha,this.depthFunc=t.depthFunc,this.depthTest=t.depthTest,this.depthWrite=t.depthWrite,this.colorWrite=t.colorWrite,this.precision=t.precision,this.polygonOffset=t.polygonOffset,this.polygonOffsetFactor=t.polygonOffsetFactor,this.polygonOffsetUnits=t.polygonOffsetUnits,this.dithering=t.dithering,this.alphaTest=t.alphaTest,this.premultipliedAlpha=t.premultipliedAlpha,this.overdraw=t.overdraw,this.visible=t.visible,this.clipShadows=t.clipShadows,this.clipIntersection=t.clipIntersection;var e=t.clippingPlanes,n=null;if(null!==e){var r=e.length;n=new Array(r);for(var i=0;i!==r;++i)n[i]=e[i].clone()}return this.clippingPlanes=n,this},dispose:function(){this.dispatchEvent({type:"dispose"})}}),Zn.prototype=Object.create(Yn.prototype),Zn.prototype.constructor=Zn,Zn.prototype.isShaderMaterial=!0,Zn.prototype.copy=function(t){return Yn.prototype.copy.call(this,t),this.fragmentShader=t.fragmentShader,this.vertexShader=t.vertexShader,this.uniforms=Un.clone(t.uniforms),this.defines=t.defines,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this.lights=t.lights,this.clipping=t.clipping,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this.morphNormals=t.morphNormals,this.extensions=t.extensions,this},Zn.prototype.toJSON=function(t){var e=Yn.prototype.toJSON.call(this,t);return e.uniforms=this.uniforms,e.vertexShader=this.vertexShader,e.fragmentShader=this.fragmentShader,e},Jn.prototype=Object.create(Yn.prototype),Jn.prototype.constructor=Jn,Jn.prototype.isMeshDepthMaterial=!0,Jn.prototype.copy=function(t){return Yn.prototype.copy.call(this,t),this.depthPacking=t.depthPacking,this.skinning=t.skinning,this.morphTargets=t.morphTargets,this.map=t.map,this.alphaMap=t.alphaMap,this.displacementMap=t.displacementMap,this.displacementScale=t.displacementScale,this.displacementBias=t.displacementBias,this.wireframe=t.wireframe,this.wireframeLinewidth=t.wireframeLinewidth,this},Object.assign(Kn.prototype,{isBox3:!0,set:function(t,e){return this.min.copy(t),this.max.copy(e),this},setFromArray:function(t){for(var e=1/0,n=1/0,r=1/0,i=-1/0,o=-1/0,a=-1/0,s=0,c=t.length;si&&(i=u),l>o&&(o=l),h>a&&(a=h)}return this.min.set(e,n,r),this.max.set(i,o,a),this},setFromBufferAttribute:function(t){for(var e=1/0,n=1/0,r=1/0,i=-1/0,o=-1/0,a=-1/0,s=0,c=t.count;si&&(i=u),l>o&&(o=l),h>a&&(a=h)}return this.min.set(e,n,r),this.max.set(i,o,a),this},setFromPoints:function(t){this.makeEmpty();for(var e=0,n=t.length;ethis.max.x||t.ythis.max.y||t.zthis.max.z)},containsBox:function(t){return this.min.x<=t.min.x&&t.max.x<=this.max.x&&this.min.y<=t.min.y&&t.max.y<=this.max.y&&this.min.z<=t.min.z&&t.max.z<=this.max.z},getParameter:function(t,e){return(e||new He).set((t.x-this.min.x)/(this.max.x-this.min.x),(t.y-this.min.y)/(this.max.y-this.min.y),(t.z-this.min.z)/(this.max.z-this.min.z))},intersectsBox:function(t){return!(t.max.xthis.max.x||t.max.ythis.max.y||t.max.zthis.max.z)},intersectsSphere:(Hn=new He,function(t){return this.clampPoint(t.center,Hn),Hn.distanceToSquared(t.center)<=t.radius*t.radius}),intersectsPlane:function(t){var e,n;return t.normal.x>0?(e=t.normal.x*this.min.x,n=t.normal.x*this.max.x):(e=t.normal.x*this.max.x,n=t.normal.x*this.min.x),t.normal.y>0?(e+=t.normal.y*this.min.y,n+=t.normal.y*this.max.y):(e+=t.normal.y*this.max.y,n+=t.normal.y*this.min.y),t.normal.z>0?(e+=t.normal.z*this.min.z,n+=t.normal.z*this.max.z):(e+=t.normal.z*this.max.z,n+=t.normal.z*this.min.z),e<=t.constant&&n>=t.constant},clampPoint:function(t,e){return(e||new He).copy(t).clamp(this.min,this.max)},distanceToPoint:function(){var t=new He;return function(e){return t.copy(e).clamp(this.min,this.max).sub(e).length()}}(),getBoundingSphere:function(){var t=new He;return function(e){var n=e||new Qn;return this.getCenter(n.center),n.radius=.5*this.getSize(t).length(),n}}(),intersect:function(t){return this.min.max(t.min),this.max.min(t.max),this.isEmpty()&&this.makeEmpty(),this},union:function(t){return this.min.min(t.min),this.max.max(t.max),this},applyMatrix4:(Gn=[new He,new He,new He,new He,new He,new He,new He,new He],function(t){return this.isEmpty()?this:(Gn[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(t),Gn[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(t),Gn[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(t),Gn[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(t),Gn[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(t),Gn[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(t),Gn[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(t),Gn[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(t),this.setFromPoints(Gn),this)}),translate:function(t){return this.min.add(t),this.max.add(t),this},equals:function(t){return t.min.equals(this.min)&&t.max.equals(this.max)}}),Object.assign(Qn.prototype,{set:function(t,e){return this.center.copy(t),this.radius=e,this},setFromPoints:(kn=new Kn,function(t,e){var n=this.center;void 0!==e?n.copy(e):kn.setFromPoints(t).getCenter(n);for(var r=0,i=0,o=t.length;ithis.radius*this.radius&&(r.sub(this.center).normalize(),r.multiplyScalar(this.radius).add(this.center)),r},getBoundingBox:function(t){var e=t||new Kn;return e.set(this.center,this.center),e.expandByScalar(this.radius),e},applyMatrix4:function(t){return this.center.applyMatrix4(t),this.radius=this.radius*t.getMaxScaleOnAxis(),this},translate:function(t){return this.center.add(t),this},equals:function(t){return t.center.equals(this.center)&&t.radius===this.radius}}),Object.assign($n.prototype,{isMatrix3:!0,set:function(t,e,n,r,i,o,a,s,c){var u=this.elements;return u[0]=t,u[1]=r,u[2]=a,u[3]=e,u[4]=i,u[5]=s,u[6]=n,u[7]=o,u[8]=c,this},identity:function(){return this.set(1,0,0,0,1,0,0,0,1),this},clone:function(){return(new this.constructor).fromArray(this.elements)},copy:function(t){var e=this.elements,n=t.elements;return e[0]=n[0],e[1]=n[1],e[2]=n[2],e[3]=n[3],e[4]=n[4],e[5]=n[5],e[6]=n[6],e[7]=n[7],e[8]=n[8],this},setFromMatrix4:function(t){var e=t.elements;return this.set(e[0],e[4],e[8],e[1],e[5],e[9],e[2],e[6],e[10]),this},applyToBufferAttribute:function(){var t=new He;return function(e){for(var n=0,r=e.count;n1?void 0:r.copy(i).multiplyScalar(a).add(e.start)}}(),intersectsLine:function(t){var e=this.distanceToPoint(t.start),n=this.distanceToPoint(t.end);return e<0&&n>0||n<0&&e>0},intersectsBox:function(t){return t.intersectsPlane(this)},intersectsSphere:function(t){return t.intersectsPlane(this)},coplanarPoint:function(t){return(t||new He).copy(this.normal).multiplyScalar(-this.constant)},applyMatrix4:function(){var t=new He,e=new $n;return function(n,r){var i=this.coplanarPoint(t).applyMatrix4(n),o=r||e.getNormalMatrix(n),a=this.normal.applyMatrix3(o).normalize();return this.constant=-i.dot(a),this}}(),translate:function(t){return this.constant=this.constant-t.dot(this.normal),this},equals:function(t){return t.normal.equals(this.normal)&&t.constant===this.constant}}),Object.assign(er.prototype,{set:function(t,e,n,r,i,o){var a=this.planes;return a[0].copy(t),a[1].copy(e),a[2].copy(n),a[3].copy(r),a[4].copy(i),a[5].copy(o),this},clone:function(){return(new this.constructor).copy(this)},copy:function(t){for(var e=this.planes,n=0;n<6;n++)e[n].copy(t.planes[n]);return this},setFromMatrix:function(t){var e=this.planes,n=t.elements,r=n[0],i=n[1],o=n[2],a=n[3],s=n[4],c=n[5],u=n[6],l=n[7],h=n[8],f=n[9],d=n[10],p=n[11],m=n[12],g=n[13],v=n[14],y=n[15];return e[0].setComponents(a-r,l-s,p-h,y-m).normalize(),e[1].setComponents(a+r,l+s,p+h,y+m).normalize(),e[2].setComponents(a+i,l+c,p+f,y+g).normalize(),e[3].setComponents(a-i,l-c,p-f,y-g).normalize(),e[4].setComponents(a-o,l-u,p-d,y-v).normalize(),e[5].setComponents(a+o,l+u,p+d,y+v).normalize(),this},intersectsObject:(Wn=new Qn,function(t){var e=t.geometry;return null===e.boundingSphere&&e.computeBoundingSphere(),Wn.copy(e.boundingSphere).applyMatrix4(t.matrixWorld),this.intersectsSphere(Wn)}),intersectsSprite:function(){var t=new Qn;return function(e){return t.center.set(0,0,0),t.radius=.7071067811865476,t.applyMatrix4(e.matrixWorld),this.intersectsSphere(t)}}(),intersectsSphere:function(t){for(var e=this.planes,n=t.center,r=-t.radius,i=0;i<6;i++){if(e[i].distanceToPoint(n)0?t.min.x:t.max.x,Vn.x=r.normal.x>0?t.max.x:t.min.x,jn.y=r.normal.y>0?t.min.y:t.max.y,Vn.y=r.normal.y>0?t.max.y:t.min.y,jn.z=r.normal.z>0?t.min.z:t.max.z,Vn.z=r.normal.z>0?t.max.z:t.min.z;var i=r.distanceToPoint(jn),o=r.distanceToPoint(Vn);if(i<0&&o<0)return!1}return!0}),containsPoint:function(t){for(var e=this.planes,n=0;n<6;n++)if(e[n].distanceToPoint(t)<0)return!1;return!0}}),ir.RotationOrders=["XYZ","YZX","ZXY","XZY","YXZ","ZYX"],ir.DefaultOrder="XYZ",Object.defineProperties(ir.prototype,{x:{get:function(){return this._x},set:function(t){this._x=t,this.onChangeCallback()}},y:{get:function(){return this._y},set:function(t){this._y=t,this.onChangeCallback()}},z:{get:function(){return this._z},set:function(t){this._z=t,this.onChangeCallback()}},order:{get:function(){return this._order},set:function(t){this._order=t,this.onChangeCallback()}}}),Object.assign(ir.prototype,{isEuler:!0,set:function(t,e,n,r){return this._x=t,this._y=e,this._z=n,this._order=r||this._order,this.onChangeCallback(),this},clone:function(){return new this.constructor(this._x,this._y,this._z,this._order)},copy:function(t){return this._x=t._x,this._y=t._y,this._z=t._z,this._order=t._order,this.onChangeCallback(),this},setFromRotationMatrix:function(t,e,n){var r=Ae.clamp,i=t.elements,o=i[0],a=i[4],s=i[8],c=i[1],u=i[5],l=i[9],h=i[2],f=i[6],d=i[10];return"XYZ"===(e=e||this._order)?(this._y=Math.asin(r(s,-1,1)),Math.abs(s)<.99999?(this._x=Math.atan2(-l,d),this._z=Math.atan2(-a,o)):(this._x=Math.atan2(f,u),this._z=0)):"YXZ"===e?(this._x=Math.asin(-r(l,-1,1)),Math.abs(l)<.99999?(this._y=Math.atan2(s,d),this._z=Math.atan2(c,u)):(this._y=Math.atan2(-h,o),this._z=0)):"ZXY"===e?(this._x=Math.asin(r(f,-1,1)),Math.abs(f)<.99999?(this._y=Math.atan2(-h,d),this._z=Math.atan2(-a,u)):(this._y=0,this._z=Math.atan2(c,o))):"ZYX"===e?(this._y=Math.asin(-r(h,-1,1)),Math.abs(h)<.99999?(this._x=Math.atan2(f,d),this._z=Math.atan2(c,o)):(this._x=0,this._z=Math.atan2(-a,u))):"YZX"===e?(this._z=Math.asin(r(c,-1,1)),Math.abs(c)<.99999?(this._x=Math.atan2(-l,u),this._y=Math.atan2(-h,o)):(this._x=0,this._y=Math.atan2(s,d))):"XZY"===e?(this._z=Math.asin(-r(a,-1,1)),Math.abs(a)<.99999?(this._x=Math.atan2(f,u),this._y=Math.atan2(s,o)):(this._x=Math.atan2(-l,d),this._y=0)):console.warn("THREE.Euler: .setFromRotationMatrix() given unsupported order: "+e),this._order=e,!1!==n&&this.onChangeCallback(),this},setFromQuaternion:function(){var t=new ke;return function(e,n,r){return t.makeRotationFromQuaternion(e),this.setFromRotationMatrix(t,n,r)}}(),setFromVector3:function(t,e){return this.set(t.x,t.y,t.z,e||this._order)},reorder:(Xn=new Ge,function(t){return Xn.setFromEuler(this),this.setFromQuaternion(Xn,t)}),equals:function(t){return t._x===this._x&&t._y===this._y&&t._z===this._z&&t._order===this._order},fromArray:function(t){return this._x=t[0],this._y=t[1],this._z=t[2],void 0!==t[3]&&(this._order=t[3]),this.onChangeCallback(),this},toArray:function(t,e){return void 0===t&&(t=[]),void 0===e&&(e=0),t[e]=this._x,t[e+1]=this._y,t[e+2]=this._z,t[e+3]=this._order,t},toVector3:function(t){return t?t.set(this._x,this._y,this._z):new He(this._x,this._y,this._z)},onChange:function(t){return this.onChangeCallback=t,this},onChangeCallback:function(){}}),Object.assign(or.prototype,{set:function(t){this.mask=1<1){for(var e=0;e1){for(var e=0;e0){r.children=[];for(a=0;a0&&(n.geometries=c),u.length>0&&(n.materials=u),l.length>0&&(n.textures=l),h.length>0&&(n.images=h)}return n.object=r,n;function f(t){var e=[];for(var n in t){var r=t[n];delete r.metadata,e.push(r)}return e}},clone:function(t){return(new this.constructor).copy(this,t)},copy:function(t,e){if(void 0===e&&(e=!0),this.name=t.name,this.up.copy(t.up),this.position.copy(t.position),this.quaternion.copy(t.quaternion),this.scale.copy(t.scale),this.matrix.copy(t.matrix),this.matrixWorld.copy(t.matrixWorld),this.matrixAutoUpdate=t.matrixAutoUpdate,this.matrixWorldNeedsUpdate=t.matrixWorldNeedsUpdate,this.layers.mask=t.layers.mask,this.visible=t.visible,this.castShadow=t.castShadow,this.receiveShadow=t.receiveShadow,this.frustumCulled=t.frustumCulled,this.renderOrder=t.renderOrder,this.userData=JSON.parse(JSON.stringify(t.userData)),!0===e)for(var n=0;ne&&(e=t[n]);return e}function zr(){Object.defineProperty(this,"id",{value:Tr()}),this.uuid=Ae.generateUUID(),this.name="",this.type="BufferGeometry",this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.drawRange={start:0,count:1/0}}function Gr(t,e,n,r,i,o){Sr.call(this),this.type="BoxGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:r,heightSegments:i,depthSegments:o},this.fromBufferGeometry(new Hr(t,e,n,r,i,o)),this.mergeVertices()}function Hr(t,e,n,r,i,o){zr.call(this),this.type="BoxBufferGeometry",this.parameters={width:t,height:e,depth:n,widthSegments:r,heightSegments:i,depthSegments:o};var a=this;r=Math.floor(r)||1,i=Math.floor(i)||1,o=Math.floor(o)||1;var s=[],c=[],u=[],l=[],h=0,f=0;function d(t,e,n,r,i,o,d,p,m,g,v){var y,x,_=o/m,b=d/g,w=o/2,M=d/2,E=p/2,T=m+1,S=g+1,A=0,R=0,L=new He;for(x=0;x0?1:-1,u.push(L.x,L.y,L.z),l.push(y/m),l.push(1-x/g),A+=1}}for(x=0;x65535?Ur:Ir)(a,1),e.update(r,t.ELEMENT_ARRAY_BUFFER),i[n.id]=r,r}}}function ri(){var t={};return{get:function(e){if(void 0!==t[e.id])return t[e.id];var n;switch(e.type){case"DirectionalLight":n={direction:new He,color:new In,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Re};break;case"SpotLight":n={position:new He,direction:new He,color:new In,distance:0,coneCos:0,penumbraCos:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Re};break;case"PointLight":n={position:new He,color:new In,distance:0,decay:0,shadow:!1,shadowBias:0,shadowRadius:1,shadowMapSize:new Re};break;case"HemisphereLight":n={direction:new He,skyColor:new In,groundColor:new In};break;case"RectAreaLight":n={color:new In,position:new He,halfWidth:new He,halfHeight:new He}}return t[e.id]=n,n}}}function ii(t,e,n){var r={};return{update:function(t){var i=n.frame,o=t.geometry,a=e.get(t,o);return r[a.id]!==i&&(o.isGeometry&&a.updateFromObject(t),e.update(a),r[a.id]=i),a},clear:function(){r={}}}}function oi(t,e,n){var r=t.createShader(e);return t.shaderSource(r,n),t.compileShader(r),!1===t.getShaderParameter(r,t.COMPILE_STATUS)&&console.error("THREE.WebGLShader: Shader couldn't compile."),""!==t.getShaderInfoLog(r)&&console.warn("THREE.WebGLShader: gl.getShaderInfoLog()",e===t.VERTEX_SHADER?"vertex":"fragment",t.getShaderInfoLog(r),function(t){for(var e=t.split("\n"),n=0;n0)for(f=0;f0&&(this.normalsNeedUpdate=!0)},computeFlatVertexNormals:function(){var t,e,n;for(this.computeFaceNormals(),t=0,e=this.faces.length;t0&&(this.normalsNeedUpdate=!0)},computeMorphNormals:function(){var t,e,n,r,i;for(n=0,r=this.faces.length;n0&&(t+=e[n].distanceTo(e[n-1])),this.lineDistances[n]=t},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Kn),this.boundingBox.setFromPoints(this.vertices)},computeBoundingSphere:function(){null===this.boundingSphere&&(this.boundingSphere=new Qn),this.boundingSphere.setFromPoints(this.vertices)},merge:function(t,e,n){if(t&&t.isGeometry){var r,i=this.vertices.length,o=this.vertices,a=t.vertices,s=this.faces,c=t.faces,u=this.faceVertexUvs[0],l=t.faceVertexUvs[0],h=this.colors,f=t.colors;void 0===n&&(n=0),void 0!==e&&(r=(new $n).getNormalMatrix(e));for(var d=0,p=a.length;d=0;n--){var p=f[n];for(this.faces.splice(p,1),a=0,s=this.faceVertexUvs.length;a0,g=d.vertexNormals.length>0,v=1!==d.color.r||1!==d.color.g||1!==d.color.b,y=d.vertexColors.length>0,x=0;if(x=M(x,0,0),x=M(x,1,!0),x=M(x,2,!1),x=M(x,3,p),x=M(x,4,m),x=M(x,5,g),x=M(x,6,v),x=M(x,7,y),a.push(x),a.push(d.a,d.b,d.c),a.push(d.materialIndex),p){var _=this.faceVertexUvs[0][i];a.push(S(_[0]),S(_[1]),S(_[2]))}if(m&&a.push(E(d.normal)),g){var b=d.vertexNormals;a.push(E(b[0]),E(b[1]),E(b[2]))}if(v&&a.push(T(d.color)),y){var w=d.vertexColors;a.push(T(w[0]),T(w[1]),T(w[2]))}}function M(t,e,n){return n?t|1<0&&(t.data.colors=u),h.length>0&&(t.data.uvs=[h]),t.data.faces=a,t},clone:function(){return(new Sr).copy(this)},copy:function(t){var e,n,r,i,o,a;this.vertices=[],this.colors=[],this.faces=[],this.faceVertexUvs=[[]],this.morphTargets=[],this.morphNormals=[],this.skinWeights=[],this.skinIndices=[],this.lineDistances=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;var s=t.vertices;for(e=0,n=s.length;e0,a=i[1]&&i[1].length>0,s=t.morphTargets,c=s.length;if(c>0){e=[];for(var u=0;u0){l=[];for(u=0;u65535?Ur:Ir)(t,1):this.index=t},addAttribute:function(t,e){return e&&e.isBufferAttribute||e&&e.isInterleavedBufferAttribute?"index"===t?(console.warn("THREE.BufferGeometry.addAttribute: Use .setIndex() for index attribute."),void this.setIndex(e)):(this.attributes[t]=e,this):(console.warn("THREE.BufferGeometry: .addAttribute() now expects ( name, attribute )."),void this.addAttribute(t,new Ar(arguments[1],arguments[2])))},getAttribute:function(t){return this.attributes[t]},removeAttribute:function(t){return delete this.attributes[t],this},addGroup:function(t,e,n){this.groups.push({start:t,count:e,materialIndex:void 0!==n?n:0})},clearGroups:function(){this.groups=[]},setDrawRange:function(t,e){this.drawRange.start=t,this.drawRange.count=e},applyMatrix:function(t){var e=this.attributes.position;void 0!==e&&(t.applyToBufferAttribute(e),e.needsUpdate=!0);var n=this.attributes.normal;void 0!==n&&((new $n).getNormalMatrix(t).applyToBufferAttribute(n),n.needsUpdate=!0);return null!==this.boundingBox&&this.computeBoundingBox(),null!==this.boundingSphere&&this.computeBoundingSphere(),this},rotateX:function(){var t=new ke;return function(e){return t.makeRotationX(e),this.applyMatrix(t),this}}(),rotateY:function(){var t=new ke;return function(e){return t.makeRotationY(e),this.applyMatrix(t),this}}(),rotateZ:function(){var t=new ke;return function(e){return t.makeRotationZ(e),this.applyMatrix(t),this}}(),translate:function(){var t=new ke;return function(e,n,r){return t.makeTranslation(e,n,r),this.applyMatrix(t),this}}(),scale:function(){var t=new ke;return function(e,n,r){return t.makeScale(e,n,r),this.applyMatrix(t),this}}(),lookAt:function(){var t=new hr;return function(e){t.lookAt(e),t.updateMatrix(),this.applyMatrix(t.matrix)}}(),center:function(){this.computeBoundingBox();var t=this.boundingBox.getCenter().negate();return this.translate(t.x,t.y,t.z),t},setFromObject:function(t){var e=t.geometry;if(t.isPoints||t.isLine){var n=new Nr(3*e.vertices.length,3),r=new Nr(3*e.colors.length,3);if(this.addAttribute("position",n.copyVector3sArray(e.vertices)),this.addAttribute("color",r.copyColorsArray(e.colors)),e.lineDistances&&e.lineDistances.length===e.vertices.length){var i=new Nr(e.lineDistances.length,1);this.addAttribute("lineDistance",i.copyArray(e.lineDistances))}null!==e.boundingSphere&&(this.boundingSphere=e.boundingSphere.clone()),null!==e.boundingBox&&(this.boundingBox=e.boundingBox.clone())}else t.isMesh&&e&&e.isGeometry&&this.fromGeometry(e);return this},updateFromObject:function(t){var e,n=t.geometry;if(t.isMesh){var r=n.__directGeometry;if(!0===n.elementsNeedUpdate&&(r=void 0,n.elementsNeedUpdate=!1),void 0===r)return this.fromGeometry(n);r.verticesNeedUpdate=n.verticesNeedUpdate,r.normalsNeedUpdate=n.normalsNeedUpdate,r.colorsNeedUpdate=n.colorsNeedUpdate,r.uvsNeedUpdate=n.uvsNeedUpdate,r.groupsNeedUpdate=n.groupsNeedUpdate,n.verticesNeedUpdate=!1,n.normalsNeedUpdate=!1,n.colorsNeedUpdate=!1,n.uvsNeedUpdate=!1,n.groupsNeedUpdate=!1,n=r}return!0===n.verticesNeedUpdate&&(void 0!==(e=this.attributes.position)&&(e.copyVector3sArray(n.vertices),e.needsUpdate=!0),n.verticesNeedUpdate=!1),!0===n.normalsNeedUpdate&&(void 0!==(e=this.attributes.normal)&&(e.copyVector3sArray(n.normals),e.needsUpdate=!0),n.normalsNeedUpdate=!1),!0===n.colorsNeedUpdate&&(void 0!==(e=this.attributes.color)&&(e.copyColorsArray(n.colors),e.needsUpdate=!0),n.colorsNeedUpdate=!1),n.uvsNeedUpdate&&(void 0!==(e=this.attributes.uv)&&(e.copyVector2sArray(n.uvs),e.needsUpdate=!0),n.uvsNeedUpdate=!1),n.lineDistancesNeedUpdate&&(void 0!==(e=this.attributes.lineDistance)&&(e.copyArray(n.lineDistances),e.needsUpdate=!0),n.lineDistancesNeedUpdate=!1),n.groupsNeedUpdate&&(n.computeGroups(t.geometry),this.groups=n.groups,n.groupsNeedUpdate=!1),this},fromGeometry:function(t){return t.__directGeometry=(new Fr).fromGeometry(t),this.fromDirectGeometry(t.__directGeometry)},fromDirectGeometry:function(t){var e=new Float32Array(3*t.vertices.length);if(this.addAttribute("position",new Ar(e,3).copyVector3sArray(t.vertices)),t.normals.length>0){var n=new Float32Array(3*t.normals.length);this.addAttribute("normal",new Ar(n,3).copyVector3sArray(t.normals))}if(t.colors.length>0){var r=new Float32Array(3*t.colors.length);this.addAttribute("color",new Ar(r,3).copyColorsArray(t.colors))}if(t.uvs.length>0){var i=new Float32Array(2*t.uvs.length);this.addAttribute("uv",new Ar(i,2).copyVector2sArray(t.uvs))}if(t.uvs2.length>0){var o=new Float32Array(2*t.uvs2.length);this.addAttribute("uv2",new Ar(o,2).copyVector2sArray(t.uvs2))}if(t.indices.length>0){var a=new(Br(t.indices)>65535?Uint32Array:Uint16Array)(3*t.indices.length);this.setIndex(new Ar(a,1).copyIndicesArray(t.indices))}for(var s in this.groups=t.groups,t.morphTargets){for(var c=[],u=t.morphTargets[s],l=0,h=u.length;l0){var p=new Nr(4*t.skinIndices.length,4);this.addAttribute("skinIndex",p.copyVector4sArray(t.skinIndices))}if(t.skinWeights.length>0){var m=new Nr(4*t.skinWeights.length,4);this.addAttribute("skinWeight",m.copyVector4sArray(t.skinWeights))}return null!==t.boundingSphere&&(this.boundingSphere=t.boundingSphere.clone()),null!==t.boundingBox&&(this.boundingBox=t.boundingBox.clone()),this},computeBoundingBox:function(){null===this.boundingBox&&(this.boundingBox=new Kn);var t=this.attributes.position;void 0!==t?this.boundingBox.setFromBufferAttribute(t):this.boundingBox.makeEmpty(),(isNaN(this.boundingBox.min.x)||isNaN(this.boundingBox.min.y)||isNaN(this.boundingBox.min.z))&&console.error('THREE.BufferGeometry.computeBoundingBox: Computed min/max have NaN values. The "position" attribute is likely to have NaN values.',this)},computeBoundingSphere:function(){var t=new Kn,e=new He;return function(){null===this.boundingSphere&&(this.boundingSphere=new Qn);var n=this.attributes.position;if(n){var r=this.boundingSphere.center;t.setFromBufferAttribute(n),t.getCenter(r);for(var i=0,o=0,a=n.count;o0&&(t.data.groups=JSON.parse(JSON.stringify(s)));var c=this.boundingSphere;return null!==c&&(t.data.boundingSphere={center:c.center.toArray(),radius:c.radius}),t},clone:function(){return(new zr).copy(this)},copy:function(t){var e,n,r;this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null,this.name=t.name;var i=t.index;null!==i&&this.setIndex(i.clone());var o=t.attributes;for(e in o){var a=o[e];this.addAttribute(e,a.clone())}var s=t.morphAttributes;for(e in s){var c=[],u=s[e];for(n=0,r=u.length;n0)if(o=u*l-h,s=c*d,(i=u*h-l)>=0)if(o>=-s)if(o<=s){var p=1/d;a=(i*=p)*(i+u*(o*=p)+2*l)+o*(u*i+o+2*h)+f}else o=c,a=-(i=Math.max(0,-(u*o+l)))*i+o*(o+2*h)+f;else o=-c,a=-(i=Math.max(0,-(u*o+l)))*i+o*(o+2*h)+f;else o<=-s?a=-(i=Math.max(0,-(-u*c+l)))*i+(o=i>0?-c:Math.min(Math.max(-c,-h),c))*(o+2*h)+f:o<=s?(i=0,a=(o=Math.min(Math.max(-c,-h),c))*(o+2*h)+f):a=-(i=Math.max(0,-(u*c+l)))*i+(o=i>0?c:Math.min(Math.max(-c,-h),c))*(o+2*h)+f;else o=u>0?-c:c,a=-(i=Math.max(0,-(u*o+l)))*i+o*(o+2*h)+f;return n&&n.copy(this.direction).multiplyScalar(i).add(this.origin),r&&r.copy(xr).multiplyScalar(o).add(yr),a}),intersectSphere:function(){var t=new He;return function(e,n){t.subVectors(e.center,this.origin);var r=t.dot(this.direction),i=t.dot(t)-r*r,o=e.radius*e.radius;if(i>o)return null;var a=Math.sqrt(o-i),s=r-a,c=r+a;return s<0&&c<0?null:s<0?this.at(c,n):this.at(s,n)}}(),intersectsSphere:function(t){return this.distanceToPoint(t.center)<=t.radius},distanceToPlane:function(t){var e=t.normal.dot(this.direction);if(0===e)return 0===t.distanceToPoint(this.origin)?0:null;var n=-(this.origin.dot(t.normal)+t.constant)/e;return n>=0?n:null},intersectPlane:function(t,e){var n=this.distanceToPlane(t);return null===n?null:this.at(n,e)},intersectsPlane:function(t){var e=t.distanceToPoint(this.origin);return 0===e||t.normal.dot(this.direction)*e<0},intersectBox:function(t,e){var n,r,i,o,a,s,c=1/this.direction.x,u=1/this.direction.y,l=1/this.direction.z,h=this.origin;return c>=0?(n=(t.min.x-h.x)*c,r=(t.max.x-h.x)*c):(n=(t.max.x-h.x)*c,r=(t.min.x-h.x)*c),u>=0?(i=(t.min.y-h.y)*u,o=(t.max.y-h.y)*u):(i=(t.max.y-h.y)*u,o=(t.min.y-h.y)*u),n>o||i>r?null:((i>n||n!=n)&&(n=i),(o=0?(a=(t.min.z-h.z)*l,s=(t.max.z-h.z)*l):(a=(t.max.z-h.z)*l,s=(t.min.z-h.z)*l),n>s||a>r?null:((a>n||n!=n)&&(n=a),(s=0?n:r,e)))},intersectsBox:(vr=new He,function(t){return null!==this.intersectBox(t,vr)}),intersectTriangle:function(){var t=new He,e=new He,n=new He,r=new He;return function(i,o,a,s,c){e.subVectors(o,i),n.subVectors(a,i),r.crossVectors(e,n);var u,l=this.direction.dot(r);if(l>0){if(s)return null;u=1}else{if(!(l<0))return null;u=-1,l=-l}t.subVectors(this.origin,i);var h=u*this.direction.dot(n.crossVectors(t,n));if(h<0)return null;var f=u*this.direction.dot(e.cross(t));if(f<0)return null;if(h+f>l)return null;var d=-u*t.dot(r);return d<0?null:this.at(d/l,c)}}(),applyMatrix4:function(t){return this.origin.applyMatrix4(t),this.direction.transformDirection(t),this},equals:function(t){return t.origin.equals(this.origin)&&t.direction.equals(this.direction)}}),Object.assign(Xr.prototype,{set:function(t,e){return this.start.copy(t),this.end.copy(e),this},clone:function(){return(new this.constructor).copy(this)},copy:function(t){return this.start.copy(t.start),this.end.copy(t.end),this},getCenter:function(t){return(t||new He).addVectors(this.start,this.end).multiplyScalar(.5)},delta:function(t){return(t||new He).subVectors(this.end,this.start)},distanceSq:function(){return this.start.distanceToSquared(this.end)},distance:function(){return this.start.distanceTo(this.end)},at:function(t,e){var n=e||new He;return this.delta(n).multiplyScalar(t).add(this.start)},closestPointToPointParameter:(br=new He,wr=new He,function(t,e){br.subVectors(t,this.start),wr.subVectors(this.end,this.start);var n=wr.dot(wr),r=wr.dot(br)/n;return e&&(r=Ae.clamp(r,0,1)),r}),closestPointToPoint:function(t,e,n){var r=this.closestPointToPointParameter(t,e),i=n||new He;return this.delta(i).multiplyScalar(r).add(this.start)},applyMatrix4:function(t){return this.start.applyMatrix4(t),this.end.applyMatrix4(t),this},equals:function(t){return t.start.equals(this.start)&&t.end.equals(this.end)}}),Object.assign(qr,{normal:(Mr=new He,function(t,e,n,r){var i=r||new He;i.subVectors(n,e),Mr.subVectors(t,e),i.cross(Mr);var o=i.lengthSq();return o>0?i.multiplyScalar(1/Math.sqrt(o)):i.set(0,0,0)}),barycoordFromPoint:function(){var t=new He,e=new He,n=new He;return function(r,i,o,a,s){t.subVectors(a,i),e.subVectors(o,i),n.subVectors(r,i);var c=t.dot(t),u=t.dot(e),l=t.dot(n),h=e.dot(e),f=e.dot(n),d=c*h-u*u,p=s||new He;if(0===d)return p.set(-2,-1,-1);var m=1/d,g=(h*l-u*f)*m,v=(c*f-u*l)*m;return p.set(1-g-v,v,g)}}(),containsPoint:function(){var t=new He;return function(e,n,r,i){var o=qr.barycoordFromPoint(e,n,r,i,t);return o.x>=0&&o.y>=0&&o.x+o.y<=1}}()}),Object.assign(qr.prototype,{set:function(t,e,n){return this.a.copy(t),this.b.copy(e),this.c.copy(n),this},setFromPointsAndIndices:function(t,e,n,r){return this.a.copy(t[e]),this.b.copy(t[n]),this.c.copy(t[r]),this},clone:function(){return(new this.constructor).copy(this)},copy:function(t){return this.a.copy(t.a),this.b.copy(t.b),this.c.copy(t.c),this},area:function(){var t=new He,e=new He;return function(){return t.subVectors(this.c,this.b),e.subVectors(this.a,this.b),.5*t.cross(e).length()}}(),midpoint:function(t){return(t||new He).addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)},normal:function(t){return qr.normal(this.a,this.b,this.c,t)},plane:function(t){return(t||new tr).setFromCoplanarPoints(this.a,this.b,this.c)},barycoordFromPoint:function(t,e){return qr.barycoordFromPoint(t,this.a,this.b,this.c,e)},containsPoint:function(t){return qr.containsPoint(t,this.a,this.b,this.c)},closestPointToPoint:function(){var t=new tr,e=[new Xr,new Xr,new Xr],n=new He,r=new He;return function(i,o){var a=o||new He,s=1/0;if(t.setFromCoplanarPoints(this.a,this.b,this.c),t.projectPoint(i,n),!0===this.containsPoint(n))a.copy(n);else{e[0].set(this.a,this.b),e[1].set(this.b,this.c),e[2].set(this.c,this.a);for(var c=0;c0){var a=i[o[0]];if(void 0!==a)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},t=0,e=a.length;t0)for(this.morphTargetInfluences=[],this.morphTargetDictionary={},t=0,e=s.length;te.far?null:{distance:c,point:p.clone(),object:t}}function v(t,e,n,a,s,c,f,p){r.fromBufferAttribute(a,c),i.fromBufferAttribute(a,f),o.fromBufferAttribute(a,p);var v=g(t,e,n,r,i,o,d);return v&&(s&&(u.fromBufferAttribute(s,c),l.fromBufferAttribute(s,f),h.fromBufferAttribute(s,p),v.uv=m(d,r,i,o,u,l,h)),v.face=new mr(c,f,p,qr.normal(r,i,o)),v.faceIndex=c),v}return function(f,p){var y,x=this.geometry,_=this.material,b=this.matrixWorld;if(void 0!==_&&(null===x.boundingSphere&&x.computeBoundingSphere(),n.copy(x.boundingSphere),n.applyMatrix4(b),!1!==f.ray.intersectsSphere(n)&&(t.getInverse(b),e.copy(f.ray).applyMatrix4(t),null===x.boundingBox||!1!==e.intersectsBox(x.boundingBox))))if(x.isBufferGeometry){var w,M,E,T,S,A=x.index,R=x.attributes.position,L=x.attributes.uv;if(null!==A)for(T=0,S=A.count;T0&&(O=F);for(var B=0,z=D.length;B/gm,function(t,e){var n=Nn[e];if(void 0===n)throw new Error("Can not resolve #include <"+e+">");return yi(n)})}function xi(t){return t.replace(/for \( int i \= (\d+)\; i < (\d+)\; i \+\+ \) \{([\s\S]+?)(?=\})\}/g,function(t,e,n,r){for(var i="",o=parseInt(e);o0?t.gammaFactor:1,w=function(t,e,n){return[(t=t||{}).derivatives||e.envMapCubeUV||e.bumpMap||e.normalMap||e.flatShading?"#extension GL_OES_standard_derivatives : enable":"",(t.fragDepth||e.logarithmicDepthBuffer)&&n.get("EXT_frag_depth")?"#extension GL_EXT_frag_depth : enable":"",t.drawBuffers&&n.get("WEBGL_draw_buffers")?"#extension GL_EXT_draw_buffers : require":"",(t.shaderTextureLOD||e.envMap)&&n.get("EXT_shader_texture_lod")?"#extension GL_EXT_shader_texture_lod : enable":""].filter(gi).join("\n")}(a,i,t.extensions),M=function(t){var e=[];for(var n in t){var r=t[n];!1!==r&&e.push("#define "+n+" "+r)}return e.join("\n")}(s),E=o.createProgram();n.isRawShaderMaterial?(p=[M,"\n"].filter(gi).join("\n"),m=[w,M,"\n"].filter(gi).join("\n")):(p=["precision "+i.precision+" float;","precision "+i.precision+" int;","#define SHADER_NAME "+r.name,M,i.supportsVertexTextures?"#define VERTEX_TEXTURES":"","#define GAMMA_FACTOR "+b,"#define MAX_BONES "+i.maxBones,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+f:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.displacementMap&&i.supportsVertexTextures?"#define USE_DISPLACEMENTMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.vertexColors?"#define USE_COLOR":"",i.flatShading?"#define FLAT_SHADED":"",i.skinning?"#define USE_SKINNING":"",i.useVertexTexture?"#define BONE_TEXTURE":"",i.morphTargets?"#define USE_MORPHTARGETS":"",i.morphNormals&&!1===i.flatShading?"#define USE_MORPHNORMALS":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+i.numClippingPlanes,i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.sizeAttenuation?"#define USE_SIZEATTENUATION":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&t.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_COLOR","\tattribute vec3 color;","#endif","#ifdef USE_MORPHTARGETS","\tattribute vec3 morphTarget0;","\tattribute vec3 morphTarget1;","\tattribute vec3 morphTarget2;","\tattribute vec3 morphTarget3;","\t#ifdef USE_MORPHNORMALS","\t\tattribute vec3 morphNormal0;","\t\tattribute vec3 morphNormal1;","\t\tattribute vec3 morphNormal2;","\t\tattribute vec3 morphNormal3;","\t#else","\t\tattribute vec3 morphTarget4;","\t\tattribute vec3 morphTarget5;","\t\tattribute vec3 morphTarget6;","\t\tattribute vec3 morphTarget7;","\t#endif","#endif","#ifdef USE_SKINNING","\tattribute vec4 skinIndex;","\tattribute vec4 skinWeight;","#endif","\n"].filter(gi).join("\n"),m=[w,"precision "+i.precision+" float;","precision "+i.precision+" int;","#define SHADER_NAME "+r.name,M,i.alphaTest?"#define ALPHATEST "+i.alphaTest:"","#define GAMMA_FACTOR "+b,i.useFog&&i.fog?"#define USE_FOG":"",i.useFog&&i.fogExp?"#define FOG_EXP2":"",i.map?"#define USE_MAP":"",i.envMap?"#define USE_ENVMAP":"",i.envMap?"#define "+h:"",i.envMap?"#define "+f:"",i.envMap?"#define "+d:"",i.lightMap?"#define USE_LIGHTMAP":"",i.aoMap?"#define USE_AOMAP":"",i.emissiveMap?"#define USE_EMISSIVEMAP":"",i.bumpMap?"#define USE_BUMPMAP":"",i.normalMap?"#define USE_NORMALMAP":"",i.specularMap?"#define USE_SPECULARMAP":"",i.roughnessMap?"#define USE_ROUGHNESSMAP":"",i.metalnessMap?"#define USE_METALNESSMAP":"",i.alphaMap?"#define USE_ALPHAMAP":"",i.vertexColors?"#define USE_COLOR":"",i.gradientMap?"#define USE_GRADIENTMAP":"",i.flatShading?"#define FLAT_SHADED":"",i.doubleSided?"#define DOUBLE_SIDED":"",i.flipSided?"#define FLIP_SIDED":"","#define NUM_CLIPPING_PLANES "+i.numClippingPlanes,"#define UNION_CLIPPING_PLANES "+(i.numClippingPlanes-i.numClipIntersection),i.shadowMapEnabled?"#define USE_SHADOWMAP":"",i.shadowMapEnabled?"#define "+l:"",i.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",i.physicallyCorrectLights?"#define PHYSICALLY_CORRECT_LIGHTS":"",i.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",i.logarithmicDepthBuffer&&t.extensions.get("EXT_frag_depth")?"#define USE_LOGDEPTHBUF_EXT":"",i.envMap&&t.extensions.get("EXT_shader_texture_lod")?"#define TEXTURE_LOD_EXT":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;",i.toneMapping!==ct?"#define TONE_MAPPING":"",i.toneMapping!==ct?Nn.tonemapping_pars_fragment:"",i.toneMapping!==ct?mi("toneMapping",i.toneMapping):"",i.dithering?"#define DITHERING":"",i.outputEncoding||i.mapEncoding||i.envMapEncoding||i.emissiveMapEncoding?Nn.encodings_pars_fragment:"",i.mapEncoding?pi("mapTexelToLinear",i.mapEncoding):"",i.envMapEncoding?pi("envMapTexelToLinear",i.envMapEncoding):"",i.emissiveMapEncoding?pi("emissiveMapTexelToLinear",i.emissiveMapEncoding):"",i.outputEncoding?(g="linearToOutputTexel",v=i.outputEncoding,y=di(v),"vec4 "+g+"( vec4 value ) { return LinearTo"+y[0]+y[1]+"; }"):"",i.depthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(gi).join("\n")),c=vi(c=yi(c),i),u=vi(u=yi(u),i),n.isShaderMaterial||(c=xi(c),u=xi(u));var T=p+c,S=m+u,A=oi(o,o.VERTEX_SHADER,T),R=oi(o,o.FRAGMENT_SHADER,S);o.attachShader(E,A),o.attachShader(E,R),void 0!==n.index0AttributeName?o.bindAttribLocation(E,0,n.index0AttributeName):!0===i.morphTargets&&o.bindAttribLocation(E,0,"position"),o.linkProgram(E);var L,P,C=o.getProgramInfoLog(E),I=o.getShaderInfoLog(A),O=o.getShaderInfoLog(R),U=!0,N=!0;return!1===o.getProgramParameter(E,o.LINK_STATUS)?(U=!1,console.error("THREE.WebGLProgram: shader error: ",o.getError(),"gl.VALIDATE_STATUS",o.getProgramParameter(E,o.VALIDATE_STATUS),"gl.getProgramInfoLog",C,I,O)):""!==C?console.warn("THREE.WebGLProgram: gl.getProgramInfoLog()",C):""!==I&&""!==O||(N=!1),N&&(this.diagnostics={runnable:U,material:n,programLog:C,vertexShader:{log:I,prefix:p},fragmentShader:{log:O,prefix:m}}),o.deleteShader(A),o.deleteShader(R),this.getUniforms=function(){return void 0===L&&(L=new Pn(o,E,t)),L},this.getAttributes=function(){return void 0===P&&(P=function(t,e,n){for(var r={},i=t.getProgramParameter(e,t.ACTIVE_ATTRIBUTES),o=0;o0,maxBones:h,useVertexTexture:e.floatVertexTextures,morphTargets:n.morphTargets,morphNormals:n.morphNormals,maxMorphTargets:t.maxMorphTargets,maxMorphNormals:t.maxMorphNormals,numDirLights:i.directional.length,numPointLights:i.point.length,numSpotLights:i.spot.length,numRectAreaLights:i.rectArea.length,numHemiLights:i.hemi.length,numClippingPlanes:s,numClipIntersection:c,dithering:n.dithering,shadowMapEnabled:t.shadowMap.enabled&&u.receiveShadow&&i.shadows.length>0,shadowMapType:t.shadowMap.type,toneMapping:t.toneMapping,physicallyCorrectLights:t.physicallyCorrectLights,premultipliedAlpha:n.premultipliedAlpha,alphaTest:n.alphaTest,doubleSided:n.side===M,flipSided:n.side===w,depthPacking:void 0!==n.depthPacking&&n.depthPacking}},this.getProgramCode=function(e,n){var r=[];if(n.shaderID?r.push(n.shaderID):(r.push(e.fragmentShader),r.push(e.vertexShader)),void 0!==e.defines)for(var o in e.defines)r.push(o),r.push(e.defines[o]);for(var a=0;ae||t.height>e){var n=e/Math.max(t.width,t.height),r=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return r.width=Math.floor(t.width*n),r.height=Math.floor(t.height*n),r.getContext("2d").drawImage(t,0,0,t.width,t.height,0,0,r.width,r.height),console.warn("THREE.WebGLRenderer: image is too big ("+t.width+"x"+t.height+"). Resized to "+r.width+"x"+r.height,t),r}return t}function u(t){return Ae.isPowerOfTwo(t.width)&&Ae.isPowerOfTwo(t.height)}function l(t,e){return t.generateMipmaps&&e&&t.minFilter!==Et&&t.minFilter!==At}function h(e){return e===Et||e===Tt||e===St?t.NEAREST:t.LINEAR}function f(e){var n=e.target;n.removeEventListener("dispose",f),function(e){var n=r.get(e);if(e.image&&n.__image__webglTextureCube)t.deleteTexture(n.__image__webglTextureCube);else{if(void 0===n.__webglInit)return;t.deleteTexture(n.__webglTexture)}r.remove(e)}(n),a.textures--}function d(e){var n=e.target;n.removeEventListener("dispose",d),function(e){var n=r.get(e),i=r.get(e.texture);if(!e)return;void 0!==i.__webglTexture&&t.deleteTexture(i.__webglTexture);e.depthTexture&&e.depthTexture.dispose();if(e.isWebGLRenderTargetCube)for(var o=0;o<6;o++)t.deleteFramebuffer(n.__webglFramebuffer[o]),n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer[o]);else t.deleteFramebuffer(n.__webglFramebuffer),n.__webglDepthbuffer&&t.deleteRenderbuffer(n.__webglDepthbuffer);r.remove(e.texture),r.remove(e)}(n),a.textures--}function p(e,h){var d=r.get(e);if(e.version>0&&d.__version!==e.version){var p=e.image;if(void 0===p)console.warn("THREE.WebGLRenderer: Texture marked for update but image is undefined",e);else{if(!1!==p.complete)return void function(e,r,h){void 0===e.__webglInit&&(e.__webglInit=!0,r.addEventListener("dispose",f),e.__webglTexture=t.createTexture(),a.textures++);n.activeTexture(t.TEXTURE0+h),n.bindTexture(t.TEXTURE_2D,e.__webglTexture),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,r.flipY),t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL,r.premultiplyAlpha),t.pixelStorei(t.UNPACK_ALIGNMENT,r.unpackAlignment);var d=c(r.image,i.maxTextureSize);(function(t){return t.wrapS!==wt||t.wrapT!==wt||t.minFilter!==Et&&t.minFilter!==At})(r)&&!1===u(d)&&(d=function(t){if(t instanceof HTMLImageElement||t instanceof HTMLCanvasElement){var e=document.createElementNS("http://www.w3.org/1999/xhtml","canvas");return e.width=Ae.nearestPowerOfTwo(t.width),e.height=Ae.nearestPowerOfTwo(t.height),e.getContext("2d").drawImage(t,0,0,e.width,e.height),console.warn("THREE.WebGLRenderer: image is not power of two ("+t.width+"x"+t.height+"). Resized to "+e.width+"x"+e.height,t),e}return t}(d));var p=u(d),g=o(r.format),v=o(r.type);m(t.TEXTURE_2D,r,p);var y,x=r.mipmaps;if(r.isDepthTexture){var _=t.DEPTH_COMPONENT;if(r.type===Dt){if(!s)throw new Error("Float Depth Texture only supported in WebGL2.0");_=t.DEPTH_COMPONENT32F}else s&&(_=t.DEPTH_COMPONENT16);r.format===Yt&&_===t.DEPTH_COMPONENT&&r.type!==Ot&&r.type!==Nt&&(console.warn("THREE.WebGLRenderer: Use UnsignedShortType or UnsignedIntType for DepthFormat DepthTexture."),r.type=Ot,v=o(r.type)),r.format===Zt&&(_=t.DEPTH_STENCIL,r.type!==Ht&&(console.warn("THREE.WebGLRenderer: Use UnsignedInt248Type for DepthStencilFormat DepthTexture."),r.type=Ht,v=o(r.type))),n.texImage2D(t.TEXTURE_2D,0,_,d.width,d.height,0,g,v,null)}else if(r.isDataTexture)if(x.length>0&&p){for(var b=0,w=x.length;b-1?n.compressedTexImage2D(t.TEXTURE_2D,b,g,y.width,y.height,0,y.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()"):n.texImage2D(t.TEXTURE_2D,b,g,y.width,y.height,0,g,v,y.data);else if(x.length>0&&p){for(var b=0,w=x.length;b1||r.get(a).__currentAnisotropy)&&(t.texParameterf(n,c.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,i.getMaxAnisotropy())),r.get(a).__currentAnisotropy=a.anisotropy)}}function g(e,i,a,s){var c=o(i.texture.format),u=o(i.texture.type);n.texImage2D(s,0,c,i.width,i.height,0,c,u,null),t.bindFramebuffer(t.FRAMEBUFFER,e),t.framebufferTexture2D(t.FRAMEBUFFER,a,s,r.get(i.texture).__webglTexture,0),t.bindFramebuffer(t.FRAMEBUFFER,null)}function v(e,n){t.bindRenderbuffer(t.RENDERBUFFER,e),n.depthBuffer&&!n.stencilBuffer?(t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_COMPONENT16,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.RENDERBUFFER,e)):n.depthBuffer&&n.stencilBuffer?(t.renderbufferStorage(t.RENDERBUFFER,t.DEPTH_STENCIL,n.width,n.height),t.framebufferRenderbuffer(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.RENDERBUFFER,e)):t.renderbufferStorage(t.RENDERBUFFER,t.RGBA4,n.width,n.height),t.bindRenderbuffer(t.RENDERBUFFER,null)}function y(e){var n=r.get(e),i=!0===e.isWebGLRenderTargetCube;if(e.depthTexture){if(i)throw new Error("target.depthTexture not supported in Cube render targets");!function(e,n){if(n&&n.isWebGLRenderTargetCube)throw new Error("Depth Texture with cube render targets is not supported!");if(t.bindFramebuffer(t.FRAMEBUFFER,e),!n.depthTexture||!n.depthTexture.isDepthTexture)throw new Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");r.get(n.depthTexture).__webglTexture&&n.depthTexture.image.width===n.width&&n.depthTexture.image.height===n.height||(n.depthTexture.image.width=n.width,n.depthTexture.image.height=n.height,n.depthTexture.needsUpdate=!0),p(n.depthTexture,0);var i=r.get(n.depthTexture).__webglTexture;if(n.depthTexture.format===Yt)t.framebufferTexture2D(t.FRAMEBUFFER,t.DEPTH_ATTACHMENT,t.TEXTURE_2D,i,0);else{if(n.depthTexture.format!==Zt)throw new Error("Unknown depthTexture format");t.framebufferTexture2D(t.FRAMEBUFFER,t.DEPTH_STENCIL_ATTACHMENT,t.TEXTURE_2D,i,0)}}(n.__webglFramebuffer,e)}else if(i){n.__webglDepthbuffer=[];for(var o=0;o<6;o++)t.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer[o]),n.__webglDepthbuffer[o]=t.createRenderbuffer(),v(n.__webglDepthbuffer[o],e)}else t.bindFramebuffer(t.FRAMEBUFFER,n.__webglFramebuffer),n.__webglDepthbuffer=t.createRenderbuffer(),v(n.__webglDepthbuffer,e);t.bindFramebuffer(t.FRAMEBUFFER,null)}this.setTexture2D=p,this.setTextureCube=function(e,s){var h=r.get(e);if(6===e.image.length)if(e.version>0&&h.__version!==e.version){h.__image__webglTextureCube||(e.addEventListener("dispose",f),h.__image__webglTextureCube=t.createTexture(),a.textures++),n.activeTexture(t.TEXTURE0+s),n.bindTexture(t.TEXTURE_CUBE_MAP,h.__image__webglTextureCube),t.pixelStorei(t.UNPACK_FLIP_Y_WEBGL,e.flipY);for(var d=e&&e.isCompressedTexture,p=e.image[0]&&e.image[0].isDataTexture,g=[],v=0;v<6;v++)g[v]=d||p?p?e.image[v].image:e.image[v]:c(e.image[v],i.maxCubemapSize);var y=u(g[0]),x=o(e.format),_=o(e.type);for(m(t.TEXTURE_CUBE_MAP,e,y),v=0;v<6;v++)if(d)for(var b,w=g[v].mipmaps,M=0,E=w.length;M-1?n.compressedTexImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+v,M,x,b.width,b.height,0,b.data):console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .setTextureCube()"):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+v,M,x,b.width,b.height,0,x,_,b.data);else p?n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+v,0,x,g[v].width,g[v].height,0,x,_,g[v].data):n.texImage2D(t.TEXTURE_CUBE_MAP_POSITIVE_X+v,0,x,x,_,g[v]);l(e,y)&&t.generateMipmap(t.TEXTURE_CUBE_MAP),h.__version=e.version,e.onUpdate&&e.onUpdate(e)}else n.activeTexture(t.TEXTURE0+s),n.bindTexture(t.TEXTURE_CUBE_MAP,h.__image__webglTextureCube)},this.setTextureCubeDynamic=function(e,i){n.activeTexture(t.TEXTURE0+i),n.bindTexture(t.TEXTURE_CUBE_MAP,r.get(e).__webglTexture)},this.setupRenderTarget=function(e){var i=r.get(e),o=r.get(e.texture);e.addEventListener("dispose",d),o.__webglTexture=t.createTexture(),a.textures++;var s=!0===e.isWebGLRenderTargetCube,c=u(e);if(s){i.__webglFramebuffer=[];for(var h=0;h<6;h++)i.__webglFramebuffer[h]=t.createFramebuffer()}else i.__webglFramebuffer=t.createFramebuffer();if(s){for(n.bindTexture(t.TEXTURE_CUBE_MAP,o.__webglTexture),m(t.TEXTURE_CUBE_MAP,e.texture,c),h=0;h<6;h++)g(i.__webglFramebuffer[h],e,t.COLOR_ATTACHMENT0,t.TEXTURE_CUBE_MAP_POSITIVE_X+h);l(e.texture,c)&&t.generateMipmap(t.TEXTURE_CUBE_MAP),n.bindTexture(t.TEXTURE_CUBE_MAP,null)}else n.bindTexture(t.TEXTURE_2D,o.__webglTexture),m(t.TEXTURE_2D,e.texture,c),g(i.__webglFramebuffer,e,t.COLOR_ATTACHMENT0,t.TEXTURE_2D),l(e.texture,c)&&t.generateMipmap(t.TEXTURE_2D),n.bindTexture(t.TEXTURE_2D,null);e.depthBuffer&&y(e)},this.updateRenderTargetMipmap=function(e){var i=e.texture;if(l(i,u(e))){var o=e.isWebGLRenderTargetCube?t.TEXTURE_CUBE_MAP:t.TEXTURE_2D,a=r.get(i).__webglTexture;n.bindTexture(o,a),t.generateMipmap(o),n.bindTexture(o,null)}}}function Mi(){var t={};return{get:function(e){var n=e.uuid,r=t[n];return void 0===r&&(r={},t[n]=r),r},remove:function(e){delete t[e.uuid]},clear:function(){t={}}}}function Ei(t,e,n){var r=new function(){var e=!1,n=new Fe,r=null,i=new Fe;return{setMask:function(n){r===n||e||(t.colorMask(n,n,n,n),r=n)},setLocked:function(t){e=t},setClear:function(e,r,o,a,s){!0===s&&(e*=a,r*=a,o*=a),n.set(e,r,o,a),!1===i.equals(n)&&(t.clearColor(e,r,o,a),i.copy(n))},reset:function(){e=!1,r=null,i.set(0,0,0,1)}}},i=new function(){var e=!1,n=null,r=null,i=null;return{setTest:function(e){e?X(t.DEPTH_TEST):q(t.DEPTH_TEST)},setMask:function(r){n===r||e||(t.depthMask(r),n=r)},setFunc:function(e){if(r!==e){if(e)switch(e){case K:t.depthFunc(t.NEVER);break;case Q:t.depthFunc(t.ALWAYS);break;case $:t.depthFunc(t.LESS);break;case tt:t.depthFunc(t.LEQUAL);break;case et:t.depthFunc(t.EQUAL);break;case nt:t.depthFunc(t.GEQUAL);break;case rt:t.depthFunc(t.GREATER);break;case it:t.depthFunc(t.NOTEQUAL);break;default:t.depthFunc(t.LEQUAL)}else t.depthFunc(t.LEQUAL);r=e}},setLocked:function(t){e=t},setClear:function(e){i!==e&&(t.clearDepth(e),i=e)},reset:function(){e=!1,n=null,r=null,i=null}}},o=new function(){var e=!1,n=null,r=null,i=null,o=null,a=null,s=null,c=null,u=null;return{setTest:function(e){e?X(t.STENCIL_TEST):q(t.STENCIL_TEST)},setMask:function(r){n===r||e||(t.stencilMask(r),n=r)},setFunc:function(e,n,a){r===e&&i===n&&o===a||(t.stencilFunc(e,n,a),r=e,i=n,o=a)},setOp:function(e,n,r){a===e&&s===n&&c===r||(t.stencilOp(e,n,r),a=e,s=n,c=r)},setLocked:function(t){e=t},setClear:function(e){u!==e&&(t.clearStencil(e),u=e)},reset:function(){e=!1,n=null,r=null,i=null,o=null,a=null,s=null,c=null,u=null}}},a=t.getParameter(t.MAX_VERTEX_ATTRIBS),s=new Uint8Array(a),c=new Uint8Array(a),u=new Uint8Array(a),l={},h=null,m=null,g=null,v=null,y=null,x=null,_=null,b=null,E=!1,T=null,S=null,A=null,R=null,N=null,D=null,F=t.getParameter(t.MAX_COMBINED_TEXTURE_IMAGE_UNITS),B=parseFloat(/^WebGL\ ([0-9])/.exec(t.getParameter(t.VERSION))[1]),z=parseFloat(B)>=1,G=null,H={},k=new Fe,j=new Fe;function V(e,n,r){var i=new Uint8Array(4),o=t.createTexture();t.bindTexture(e,o),t.texParameteri(e,t.TEXTURE_MIN_FILTER,t.NEAREST),t.texParameteri(e,t.TEXTURE_MAG_FILTER,t.NEAREST);for(var a=0;a0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.HIGH_FLOAT).precision>0)return"highp";e="mediump"}return"mediump"===e&&t.getShaderPrecisionFormat(t.VERTEX_SHADER,t.MEDIUM_FLOAT).precision>0&&t.getShaderPrecisionFormat(t.FRAGMENT_SHADER,t.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}var o=void 0!==n.precision?n.precision:"highp",a=i(o);a!==o&&(console.warn("THREE.WebGLRenderer:",o,"not supported, using",a,"instead."),o=a);var s=!0===n.logarithmicDepthBuffer&&!!e.get("EXT_frag_depth"),c=t.getParameter(t.MAX_TEXTURE_IMAGE_UNITS),u=t.getParameter(t.MAX_VERTEX_TEXTURE_IMAGE_UNITS),l=t.getParameter(t.MAX_TEXTURE_SIZE),h=t.getParameter(t.MAX_CUBE_MAP_TEXTURE_SIZE),f=t.getParameter(t.MAX_VERTEX_ATTRIBS),d=t.getParameter(t.MAX_VERTEX_UNIFORM_VECTORS),p=t.getParameter(t.MAX_VARYING_VECTORS),m=t.getParameter(t.MAX_FRAGMENT_UNIFORM_VECTORS),g=u>0,v=!!e.get("OES_texture_float");return{getMaxAnisotropy:function(){if(void 0!==r)return r;var n=e.get("EXT_texture_filter_anisotropic");return r=null!==n?t.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT):0},getMaxPrecision:i,precision:o,logarithmicDepthBuffer:s,maxTextures:c,maxVertexTextures:u,maxTextureSize:l,maxCubemapSize:h,maxAttributes:f,maxVertexUniforms:d,maxVaryings:p,maxFragmentUniforms:m,vertexTextures:g,floatFragmentTextures:v,floatVertexTextures:g&&v}}function Si(t){pr.call(this),this.cameras=t||[]}function Ai(t){var e=this,n=null,r=null;"VRFrameData"in window&&(r=new window.VRFrameData);var i=new ke,o=new ke,a=new ke,s=new pr;s.bounds=new Fe(0,0,.5,1),s.layers.enable(1);var c=new pr;c.bounds=new Fe(.5,0,.5,1),c.layers.enable(2);var u,l,h=new Si([s,c]);h.layers.enable(1),h.layers.enable(2),window.addEventListener("vrdisplaypresentchange",function(){if(n.isPresenting){var r=n.getEyeParameters("left"),i=r.renderWidth,o=r.renderHeight;l=t.getPixelRatio(),u=t.getSize(),t.setDrawingBufferSize(2*i,o,1)}else e.enabled&&t.setDrawingBufferSize(u.width,u.height,l)},!1),this.enabled=!1,this.standing=!1,this.getDevice=function(){return n},this.setDevice=function(t){void 0!==t&&(n=t)},this.getCamera=function(t){if(null===n)return t;n.depthNear=t.near,n.depthFar=t.far,n.getFrameData(r);var e=r.pose;null!==e.position?t.position.fromArray(e.position):t.position.set(0,0,0),null!==e.orientation&&t.quaternion.fromArray(e.orientation),t.updateMatrixWorld();var u=n.stageParameters;if(this.standing&&u&&(o.fromArray(u.sittingToStandingTransform),a.getInverse(o),t.matrixWorld.multiply(o),t.matrixWorldInverse.multiply(a)),!1===n.isPresenting)return t;h.matrixWorld.copy(t.matrixWorld),h.matrixWorldInverse.copy(t.matrixWorldInverse),s.matrixWorldInverse.fromArray(r.leftViewMatrix),c.matrixWorldInverse.fromArray(r.rightViewMatrix),this.standing&&u&&(s.matrixWorldInverse.multiply(a),c.matrixWorldInverse.multiply(a));var l=t.parent;null!==l&&(i.getInverse(l.matrixWorld),s.matrixWorldInverse.multiply(i),c.matrixWorldInverse.multiply(i)),s.matrixWorld.getInverse(s.matrixWorldInverse),c.matrixWorld.getInverse(c.matrixWorldInverse),s.projectionMatrix.fromArray(r.leftProjectionMatrix),c.projectionMatrix.fromArray(r.rightProjectionMatrix),h.projectionMatrix.copy(s.projectionMatrix);var f=n.getLayers();if(f.length){var d=f[0];null!==d.leftBounds&&4===d.leftBounds.length&&s.bounds.fromArray(d.leftBounds),null!==d.rightBounds&&4===d.rightBounds.length&&c.bounds.fromArray(d.rightBounds)}return h},this.getStandingMatrix=function(){return o},this.submitFrame=function(){n&&n.isPresenting&&n.submitFrame()}}function Ri(t){var e={};return{get:function(n){if(void 0!==e[n])return e[n];var r;switch(n){case"WEBGL_depth_texture":r=t.getExtension("WEBGL_depth_texture")||t.getExtension("MOZ_WEBGL_depth_texture")||t.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":r=t.getExtension("EXT_texture_filter_anisotropic")||t.getExtension("MOZ_EXT_texture_filter_anisotropic")||t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":r=t.getExtension("WEBGL_compressed_texture_s3tc")||t.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":r=t.getExtension("WEBGL_compressed_texture_pvrtc")||t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;case"WEBGL_compressed_texture_etc1":r=t.getExtension("WEBGL_compressed_texture_etc1");break;default:r=t.getExtension(n)}return null===r&&console.warn("THREE.WebGLRenderer: "+n+" extension not supported."),e[n]=r,r}}}function Li(){var t=this,e=null,n=0,r=!1,i=!1,o=new tr,a=new $n,s={value:null,needsUpdate:!1};function c(){s.value!==e&&(s.value=e,s.needsUpdate=n>0),t.numPlanes=n,t.numIntersection=0}function u(e,n,r,i){var c=null!==e?e.length:0,u=null;if(0!==c){if(u=s.value,!0!==i||null===u){var l=r+4*c,h=n.matrixWorldInverse;a.getNormalMatrix(h),(null===u||u.length=0&&t.numSupportedMorphTargets++}if(t.morphNormals){t.numSupportedMorphNormals=0;for(l=0;l=0&&t.numSupportedMorphNormals++}var h=r.shader.uniforms;(t.isShaderMaterial||t.isRawShaderMaterial)&&!0!==t.clipping||(r.numClippingPlanes=tt.numPlanes,r.numIntersection=tt.numIntersection,h.clippingPlanes=tt.uniform),r.fog=e,r.lightsHash=st.hash,t.lights&&(h.ambientLightColor.value=st.ambient,h.directionalLights.value=st.directional,h.spotLights.value=st.spot,h.rectAreaLights.value=st.rectArea,h.pointLights.value=st.point,h.hemisphereLights.value=st.hemi,h.directionalShadowMap.value=st.directionalShadowMap,h.directionalShadowMatrix.value=st.directionalShadowMatrix,h.spotShadowMap.value=st.spotShadowMap,h.spotShadowMatrix.value=st.spotShadowMatrix,h.pointShadowMap.value=st.pointShadowMap,h.pointShadowMatrix.value=st.pointShadowMatrix);var f=r.program.getUniforms(),d=Pn.seqWithValue(f.seq,h);r.uniformsList=d}function Re(t,e,n,r){P=0;var i=mt.get(n);if(et&&(nt||t!==M)){var o=t===M&&n.id===b;tt.setState(n.clippingPlanes,n.clipIntersection,n.clipShadows,t,i,o)}!1===n.needsUpdate&&(void 0===i.program?n.needsUpdate=!0:n.fog&&i.fog!==e?n.needsUpdate=!0:n.lights&&i.lightsHash!==st.hash?n.needsUpdate=!0:void 0===i.numClippingPlanes||i.numClippingPlanes===tt.numPlanes&&i.numIntersection===tt.numIntersection||(n.needsUpdate=!0)),n.needsUpdate&&(Se(n,e,r),n.needsUpdate=!1);var a,s,c=!1,u=!1,l=!1,h=i.program,f=h.getUniforms(),d=i.shader.uniforms;if(h.id!==y&&(m.useProgram(h.program),y=h.id,c=!0,u=!0,l=!0),n.id!==b&&(b=n.id,u=!0),c||t!==M){if(f.setValue(m,"projectionMatrix",t.projectionMatrix),dt.logarithmicDepthBuffer&&f.setValue(m,"logDepthBufFC",2/(Math.log(t.far+1)/Math.LN2)),M!==(T||t)&&(M=T||t,u=!0,l=!0),n.isShaderMaterial||n.isMeshPhongMaterial||n.isMeshStandardMaterial||n.envMap){var p=f.map.cameraPosition;void 0!==p&&p.setValue(m,it.setFromMatrixPosition(t.matrixWorld))}(n.isMeshPhongMaterial||n.isMeshLambertMaterial||n.isMeshBasicMaterial||n.isMeshStandardMaterial||n.isShaderMaterial||n.skinning)&&f.setValue(m,"viewMatrix",t.matrixWorldInverse)}if(n.skinning){f.setOptional(m,r,"bindMatrix"),f.setOptional(m,r,"bindMatrixInverse");var g=r.skeleton;if(g){var x=g.bones;if(dt.floatVertexTextures){if(void 0===g.boneTexture){var _=Math.sqrt(4*x.length);_=Ae.nextPowerOfTwo(Math.ceil(_)),_=Math.max(_,4);var w=new Float32Array(_*_*4);w.set(g.boneMatrices);var E=new je(w,_,_,Vt,Dt);g.boneMatrices=w,g.boneTexture=E,g.boneTextureSize=_}f.setValue(m,"boneTexture",g.boneTexture),f.setValue(m,"boneTextureSize",g.boneTextureSize)}else f.setOptional(m,g,"boneMatrices")}}return u&&(f.setValue(m,"toneMappingExposure",v.toneMappingExposure),f.setValue(m,"toneMappingWhitePoint",v.toneMappingWhitePoint),n.lights&&(s=l,(a=d).ambientLightColor.needsUpdate=s,a.directionalLights.needsUpdate=s,a.pointLights.needsUpdate=s,a.spotLights.needsUpdate=s,a.rectAreaLights.needsUpdate=s,a.hemisphereLights.needsUpdate=s),e&&n.fog&&function(t,e){t.fogColor.value=e.color,e.isFog?(t.fogNear.value=e.near,t.fogFar.value=e.far):e.isFogExp2&&(t.fogDensity.value=e.density)}(d,e),(n.isMeshBasicMaterial||n.isMeshLambertMaterial||n.isMeshPhongMaterial||n.isMeshStandardMaterial||n.isMeshNormalMaterial||n.isMeshDepthMaterial)&&function(t,e){t.opacity.value=e.opacity,t.diffuse.value=e.color,e.emissive&&t.emissive.value.copy(e.emissive).multiplyScalar(e.emissiveIntensity);t.map.value=e.map,t.specularMap.value=e.specularMap,t.alphaMap.value=e.alphaMap,e.lightMap&&(t.lightMap.value=e.lightMap,t.lightMapIntensity.value=e.lightMapIntensity);e.aoMap&&(t.aoMap.value=e.aoMap,t.aoMapIntensity.value=e.aoMapIntensity);var n;e.map?n=e.map:e.specularMap?n=e.specularMap:e.displacementMap?n=e.displacementMap:e.normalMap?n=e.normalMap:e.bumpMap?n=e.bumpMap:e.roughnessMap?n=e.roughnessMap:e.metalnessMap?n=e.metalnessMap:e.alphaMap?n=e.alphaMap:e.emissiveMap&&(n=e.emissiveMap);if(void 0!==n){n.isWebGLRenderTarget&&(n=n.texture);var r=n.offset,i=n.repeat;t.offsetRepeat.value.set(r.x,r.y,i.x,i.y)}t.envMap.value=e.envMap,t.flipEnvMap.value=e.envMap&&e.envMap.isCubeTexture?-1:1,t.reflectivity.value=e.reflectivity,t.refractionRatio.value=e.refractionRatio}(d,n),n.isLineBasicMaterial?Le(d,n):n.isLineDashedMaterial?(Le(d,n),function(t,e){t.dashSize.value=e.dashSize,t.totalSize.value=e.dashSize+e.gapSize,t.scale.value=e.scale}(d,n)):n.isPointsMaterial?function(t,e){if(t.diffuse.value=e.color,t.opacity.value=e.opacity,t.size.value=e.size*O,t.scale.value=.5*I,t.map.value=e.map,null!==e.map){var n=e.map.offset,r=e.map.repeat;t.offsetRepeat.value.set(n.x,n.y,r.x,r.y)}}(d,n):n.isMeshLambertMaterial?function(t,e){e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap)}(d,n):n.isMeshToonMaterial?function(t,e){Pe(t,e),e.gradientMap&&(t.gradientMap.value=e.gradientMap)}(d,n):n.isMeshPhongMaterial?Pe(d,n):n.isMeshPhysicalMaterial?function(t,e){t.clearCoat.value=e.clearCoat,t.clearCoatRoughness.value=e.clearCoatRoughness,Ce(t,e)}(d,n):n.isMeshStandardMaterial?Ce(d,n):n.isMeshDepthMaterial?n.displacementMap&&(d.displacementMap.value=n.displacementMap,d.displacementScale.value=n.displacementScale,d.displacementBias.value=n.displacementBias):n.isMeshNormalMaterial&&function(t,e){e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale);e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale));e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}(d,n),void 0!==d.ltcMat&&(d.ltcMat.value=On.LTC_MAT_TEXTURE),void 0!==d.ltcMag&&(d.ltcMag.value=On.LTC_MAG_TEXTURE),Pn.upload(m,i.uniformsList,d,v)),f.setValue(m,"modelViewMatrix",r.modelViewMatrix),f.setValue(m,"normalMatrix",r.normalMatrix),f.setValue(m,"modelMatrix",r.matrixWorld),h}function Le(t,e){t.diffuse.value=e.color,t.opacity.value=e.opacity}function Pe(t,e){t.specular.value=e.specular,t.shininess.value=Math.max(e.shininess,1e-4),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale)),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias)}function Ce(t,e){t.roughness.value=e.roughness,t.metalness.value=e.metalness,e.roughnessMap&&(t.roughnessMap.value=e.roughnessMap),e.metalnessMap&&(t.metalnessMap.value=e.metalnessMap),e.emissiveMap&&(t.emissiveMap.value=e.emissiveMap),e.bumpMap&&(t.bumpMap.value=e.bumpMap,t.bumpScale.value=e.bumpScale),e.normalMap&&(t.normalMap.value=e.normalMap,t.normalScale.value.copy(e.normalScale)),e.displacementMap&&(t.displacementMap.value=e.displacementMap,t.displacementScale.value=e.displacementScale,t.displacementBias.value=e.displacementBias),e.envMap&&(t.envMapIntensity.value=e.envMapIntensity)}function Ie(t,e){var n,r,i,o,a,s,c,u,l=0,h=0,f=0,d=e.matrixWorldInverse,p=0,m=0,g=0,v=0,y=0;for(n=0,r=t.length;n8&&(l.length=8);var g=n.morphAttributes;for(h=0,d=l.length;h=0){var u=i[s];if(void 0!==u){var l=u.normalized,h=u.itemSize,f=vt.get(u),d=f.buffer,p=f.type,g=f.bytesPerElement;if(u.isInterleavedBufferAttribute){var v=u.data,y=v.stride,x=u.offset;v&&v.isInstancedInterleavedBuffer?(pt.enableAttributeAndDivisor(c,v.meshPerAttribute),void 0===n.maxInstancedCount&&(n.maxInstancedCount=v.meshPerAttribute*v.count)):pt.enableAttribute(c),m.bindBuffer(m.ARRAY_BUFFER,d),m.vertexAttribPointer(c,h,p,l,y*g,(r*y+x)*g)}else u.isInstancedBufferAttribute?(pt.enableAttributeAndDivisor(c,u.meshPerAttribute),void 0===n.maxInstancedCount&&(n.maxInstancedCount=u.meshPerAttribute*u.count)):pt.enableAttribute(c),m.bindBuffer(m.ARRAY_BUFFER,d),m.vertexAttribPointer(c,h,p,l,0,r*h*g)}else if(void 0!==a){var _=a[s];if(void 0!==_)switch(_.length){case 2:m.vertexAttrib2fv(c,_);break;case 3:m.vertexAttrib3fv(c,_);break;case 4:m.vertexAttrib4fv(c,_);break;default:m.vertexAttrib1fv(c,_)}}}}pt.disableUnusedAttributes()}(r,a,n),null!==v&&m.bindBuffer(m.ELEMENT_ARRAY_BUFFER,x.buffer));var E=0;null!==v?E=v.count:void 0!==_&&(E=_.count);var T=n.drawRange.start*b,S=n.drawRange.count*b,A=null!==o?o.start*b:0,R=null!==o?o.count*b:1/0,L=Math.max(T,A),P=Math.min(E,T+S,A+R)-1,C=Math.max(0,P-L+1);if(0!==C){if(i.isMesh)if(!0===r.wireframe)pt.setLineWidth(r.wireframeLinewidth*le()),M.setMode(m.LINES);else switch(i.drawMode){case pe:M.setMode(m.TRIANGLES);break;case me:M.setMode(m.TRIANGLE_STRIP);break;case ge:M.setMode(m.TRIANGLE_FAN)}else if(i.isLine){var I=r.linewidth;void 0===I&&(I=1),pt.setLineWidth(I*le()),i.isLineSegments?M.setMode(m.LINES):i.isLineLoop?M.setMode(m.LINE_LOOP):M.setMode(m.LINE_STRIP)}else i.isPoints&&M.setMode(m.POINTS);n&&n.isInstancedBufferGeometry?n.maxInstancedCount>0&&M.renderInstances(n,L,C):M.render(L,C)}},this.compile=function(t,e){u=[],t.traverse(function(t){t.isLight&&u.push(t)}),Ie(u,e),t.traverse(function(e){if(e.material)if(Array.isArray(e.material))for(var n=0;n=dt.maxTextures&&console.warn("THREE.WebGLRenderer: Trying to use "+t+" texture units while this GPU supports only "+dt.maxTextures),P+=1,t},this.setTexture2D=(ve=!1,function(t,e){t&&t.isWebGLRenderTarget&&(ve||(console.warn("THREE.WebGLRenderer.setTexture2D: don't use render targets as textures. Use their .texture property instead."),ve=!0),t=t.texture),gt.setTexture2D(t,e)}),this.setTexture=function(){var t=!1;return function(e,n){t||(console.warn("THREE.WebGLRenderer: .setTexture is deprecated, use setTexture2D instead."),t=!0),gt.setTexture2D(e,n)}}(),this.setTextureCube=function(){var t=!1;return function(e,n){e&&e.isWebGLRenderTargetCube&&(t||(console.warn("THREE.WebGLRenderer.setTextureCube: don't use cube render targets as textures. Use their .texture property instead."),t=!0),e=e.texture),e&&e.isCubeTexture||Array.isArray(e.image)&&6===e.image.length?gt.setTextureCube(e,n):gt.setTextureCubeDynamic(e,n)}}(),this.getRenderTarget=function(){return x},this.setRenderTarget=function(t){x=t,t&&void 0===mt.get(t).__webglFramebuffer&>.setupRenderTarget(t);var e,n=t&&t.isWebGLRenderTargetCube;if(t){var r=mt.get(t);e=n?r.__webglFramebuffer[t.activeCubeFace]:r.__webglFramebuffer,A.copy(t.scissor),R=t.scissorTest,L.copy(t.viewport)}else e=null,A.copy(U).multiplyScalar(O),R=K,L.copy(Q).multiplyScalar(O);if(_!==e&&(m.bindFramebuffer(m.FRAMEBUFFER,e),_=e),pt.scissor(A),pt.setScissorTest(R),pt.viewport(L),n){var i=mt.get(t.texture);m.framebufferTexture2D(m.FRAMEBUFFER,m.COLOR_ATTACHMENT0,m.TEXTURE_CUBE_MAP_POSITIVE_X+t.activeCubeFace,i.__webglTexture,t.activeMipMapLevel)}},this.readRenderTargetPixels=function(t,e,n,r,i,o){if(t&&t.isWebGLRenderTarget){var a=mt.get(t).__webglFramebuffer;if(a){var s=!1;a!==_&&(m.bindFramebuffer(m.FRAMEBUFFER,a),s=!0);try{var c=t.texture,u=c.format,l=c.type;if(u!==Vt&&Oe(u)!==m.getParameter(m.IMPLEMENTATION_COLOR_READ_FORMAT))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!(l===Pt||Oe(l)===m.getParameter(m.IMPLEMENTATION_COLOR_READ_TYPE)||l===Dt&&(ft.get("OES_texture_float")||ft.get("WEBGL_color_buffer_float"))||l===Ft&&ft.get("EXT_color_buffer_half_float")))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");m.checkFramebufferStatus(m.FRAMEBUFFER)===m.FRAMEBUFFER_COMPLETE?e>=0&&e<=t.width-r&&n>=0&&n<=t.height-i&&m.readPixels(e,n,r,i,Oe(u),Oe(l),o):console.error("THREE.WebGLRenderer.readRenderTargetPixels: readPixels from renderTarget failed. Framebuffer not complete.")}finally{s&&m.bindFramebuffer(m.FRAMEBUFFER,_)}}}else console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.")}}function Ci(t,e){this.name="",this.color=new In(t),this.density=void 0!==e?e:25e-5}function Ii(t,e,n){this.name="",this.color=new In(t),this.near=void 0!==e?e:1,this.far=void 0!==n?n:1e3}function Oi(){hr.call(this),this.type="Scene",this.background=null,this.fog=null,this.overrideMaterial=null,this.autoUpdate=!0}function Ui(t,e,n,r,i){hr.call(this),this.lensFlares=[],this.positionScreen=new He,this.customUpdateCallback=void 0,void 0!==t&&this.add(t,e,n,r,i)}function Ni(t){Yn.call(this),this.type="SpriteMaterial",this.color=new In(16777215),this.map=null,this.rotation=0,this.fog=!1,this.lights=!1,this.setValues(t)}function Di(t){hr.call(this),this.type="Sprite",this.material=void 0!==t?t:new Ni}function Fi(){hr.call(this),this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]}})}function Bi(t,e){if(t=t||[],this.bones=t.slice(0),this.boneMatrices=new Float32Array(16*this.bones.length),void 0===e)this.calculateInverses();else if(this.bones.length===e.length)this.boneInverses=e.slice(0);else{console.warn("THREE.Skeleton boneInverses is the wrong length."),this.boneInverses=[];for(var n=0,r=this.bones.length;n=t.HAVE_CURRENT_DATA&&(u.needsUpdate=!0)}()}function Zi(t,e,n,r,i,o,a,s,c,u,l,h){De.call(this,null,o,a,s,c,u,r,i,l,h),this.image={width:e,height:n},this.mipmaps=t,this.flipY=!1,this.generateMipmaps=!1}function Ji(t,e,n,r,i,o,a,s,c){De.call(this,t,e,n,r,i,o,a,s,c),this.needsUpdate=!0}function Ki(t,e,n,r,i,o,a,s,c,u){if((u=void 0!==u?u:Yt)!==Yt&&u!==Zt)throw new Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&u===Yt&&(n=Ot),void 0===n&&u===Zt&&(n=Ht),De.call(this,null,r,i,o,a,s,u,n,c),this.image={width:t,height:e},this.magFilter=void 0!==a?a:Et,this.minFilter=void 0!==s?s:Et,this.flipY=!1,this.generateMipmaps=!1}function Qi(t){zr.call(this),this.type="WireframeGeometry";var e,n,r,i,o,a,s,c,u,l,h=[],f=[0,0],d={},p=["a","b","c"];if(t&&t.isGeometry){var m=t.faces;for(e=0,r=m.length;e=0?(h=t(g-1e-5,m,h),f.subVectors(l,h)):(h=t(g+1e-5,m,h),f.subVectors(h,l)),m-1e-5>=0?(h=t(g,m-1e-5,h),d.subVectors(l,h)):(h=t(g,m+1e-5,h),d.subVectors(h,l)),u.crossVectors(f,d).normalize(),s.push(u.x,u.y,u.z),c.push(g,m)}}for(r=0;r.9&&a<.1&&(e<.2&&(o[t+0]+=1),n<.2&&(o[t+2]+=1),r<.2&&(o[t+4]+=1))}}()}(),this.addAttribute("position",new Nr(i,3)),this.addAttribute("normal",new Nr(i.slice(),3)),this.addAttribute("uv",new Nr(o,2)),0===r?this.computeVertexNormals():this.normalizeNormals()}function ro(t,e){Sr.call(this),this.type="TetrahedronGeometry",this.parameters={radius:t,detail:e},this.fromBufferGeometry(new io(t,e)),this.mergeVertices()}function io(t,e){no.call(this,[1,1,1,-1,-1,1,-1,1,-1,1,-1,-1],[2,1,0,0,3,2,1,3,0,2,3,1],t,e),this.type="TetrahedronBufferGeometry",this.parameters={radius:t,detail:e}}function oo(t,e){Sr.call(this),this.type="OctahedronGeometry",this.parameters={radius:t,detail:e},this.fromBufferGeometry(new ao(t,e)),this.mergeVertices()}function ao(t,e){no.call(this,[1,0,0,-1,0,0,0,1,0,0,-1,0,0,0,1,0,0,-1],[0,2,4,0,4,3,0,3,5,0,5,2,1,2,5,1,5,3,1,3,4,1,4,2],t,e),this.type="OctahedronBufferGeometry",this.parameters={radius:t,detail:e}}function so(t,e){Sr.call(this),this.type="IcosahedronGeometry",this.parameters={radius:t,detail:e},this.fromBufferGeometry(new co(t,e)),this.mergeVertices()}function co(t,e){var n=(1+Math.sqrt(5))/2,r=[-1,n,0,1,n,0,-1,-n,0,1,-n,0,0,-1,n,0,1,n,0,-1,-n,0,1,-n,n,0,-1,n,0,1,-n,0,-1,-n,0,1];no.call(this,r,[0,11,5,0,5,1,0,1,7,0,7,10,0,10,11,1,5,9,5,11,4,11,10,2,10,7,6,7,1,8,3,9,4,3,4,2,3,2,6,3,6,8,3,8,9,4,9,5,2,4,11,6,2,10,8,6,7,9,8,1],t,e),this.type="IcosahedronBufferGeometry",this.parameters={radius:t,detail:e}}function uo(t,e){Sr.call(this),this.type="DodecahedronGeometry",this.parameters={radius:t,detail:e},this.fromBufferGeometry(new lo(t,e)),this.mergeVertices()}function lo(t,e){var n=(1+Math.sqrt(5))/2,r=1/n,i=[-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-r,-n,0,-r,n,0,r,-n,0,r,n,-r,-n,0,-r,n,0,r,-n,0,r,n,0,-n,0,-r,n,0,-r,-n,0,r,n,0,r];no.call(this,i,[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],t,e),this.type="DodecahedronBufferGeometry",this.parameters={radius:t,detail:e}}function ho(t,e,n,r,i,o){Sr.call(this),this.type="TubeGeometry",this.parameters={path:t,tubularSegments:e,radius:n,radialSegments:r,closed:i},void 0!==o&&console.warn("THREE.TubeGeometry: taper has been removed.");var a=new fo(t,e,n,r,i);this.tangents=a.tangents,this.normals=a.normals,this.binormals=a.binormals,this.fromBufferGeometry(a),this.mergeVertices()}function fo(t,e,n,r,i){zr.call(this),this.type="TubeBufferGeometry",this.parameters={path:t,tubularSegments:e,radius:n,radialSegments:r,closed:i},e=e||64,n=n||1,r=r||8,i=i||!1;var o=t.computeFrenetFrames(e,i);this.tangents=o.tangents,this.normals=o.normals,this.binormals=o.binormals;var a,s,c=new He,u=new He,l=new Re,h=[],f=[],d=[],p=[];function m(i){var a=t.getPointAt(i/e),l=o.normals[i],d=o.binormals[i];for(s=0;s<=r;s++){var p=s/r*Math.PI*2,m=Math.sin(p),g=-Math.cos(p);u.x=g*l.x+m*d.x,u.y=g*l.y+m*d.y,u.z=g*l.z+m*d.z,u.normalize(),f.push(u.x,u.y,u.z),c.x=a.x+n*u.x,c.y=a.y+n*u.y,c.z=a.z+n*u.z,h.push(c.x,c.y,c.z)}}!function(){for(a=0;an)){var r=t.ray.origin.distanceTo(ai);rt.far||e.push({distance:r,point:ai.clone(),face:null,object:this})}}),clone:function(){return new this.constructor(this.material).copy(this)}}),Fi.prototype=Object.assign(Object.create(hr.prototype),{constructor:Fi,copy:function(t){hr.prototype.copy.call(this,t,!1);for(var e=t.levels,n=0,r=e.length;n1){t.setFromMatrixPosition(n.matrixWorld),e.setFromMatrixPosition(this.matrixWorld);var i=t.distanceTo(e);r[0].object.visible=!0;for(var o=1,a=r.length;o=r[o].distance;o++)r[o-1].object.visible=!1,r[o].object.visible=!0;for(;oa))f.applyMatrix4(this.matrixWorld),(M=r.ray.origin.distanceTo(f))r.far||i.push({distance:M,point:h.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}else for(v=0,y=m.length/3-1;va))f.applyMatrix4(this.matrixWorld),(M=r.ray.origin.distanceTo(f))r.far||i.push({distance:M,point:h.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}else if(s.isGeometry){var b=s.vertices,w=b.length;for(v=0;va))f.applyMatrix4(this.matrixWorld),(M=r.ray.origin.distanceTo(f))r.far||i.push({distance:M,point:h.clone().applyMatrix4(this.matrixWorld),index:v,face:null,faceIndex:null,object:this})}}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),ji.prototype=Object.assign(Object.create(ki.prototype),{constructor:ji,isLineSegments:!0}),Vi.prototype=Object.assign(Object.create(ki.prototype),{constructor:Vi,isLineLoop:!0}),Wi.prototype=Object.create(Yn.prototype),Wi.prototype.constructor=Wi,Wi.prototype.isPointsMaterial=!0,Wi.prototype.copy=function(t){return Yn.prototype.copy.call(this,t),this.color.copy(t.color),this.map=t.map,this.size=t.size,this.sizeAttenuation=t.sizeAttenuation,this},Xi.prototype=Object.assign(Object.create(hr.prototype),{constructor:Xi,isPoints:!0,raycast:function(){var t=new ke,e=new Wr,n=new Qn;return function(r,i){var o=this,a=this.geometry,s=this.matrixWorld,c=r.params.Points.threshold;if(null===a.boundingSphere&&a.computeBoundingSphere(),n.copy(a.boundingSphere),n.applyMatrix4(s),n.radius+=c,!1!==r.ray.intersectsSphere(n)){t.getInverse(s),e.copy(r.ray).applyMatrix4(t);var u=c/((this.scale.x+this.scale.y+this.scale.z)/3),l=u*u,h=new He;if(a.isBufferGeometry){var f=a.index,d=a.attributes.position.array;if(null!==f)for(var p=f.array,m=0,g=p.length;mr.far)return;i.push({distance:u,distanceToRay:Math.sqrt(a),point:c.clone(),index:n,face:null,object:o})}}}}(),clone:function(){return new this.constructor(this.geometry,this.material).copy(this)}}),qi.prototype=Object.assign(Object.create(hr.prototype),{constructor:qi}),Yi.prototype=Object.create(De.prototype),Yi.prototype.constructor=Yi,Zi.prototype=Object.create(De.prototype),Zi.prototype.constructor=Zi,Zi.prototype.isCompressedTexture=!0,Ji.prototype=Object.create(De.prototype),Ji.prototype.constructor=Ji,Ki.prototype=Object.create(De.prototype),Ki.prototype.constructor=Ki,Ki.prototype.isDepthTexture=!0,Qi.prototype=Object.create(zr.prototype),Qi.prototype.constructor=Qi,$i.prototype=Object.create(Sr.prototype),$i.prototype.constructor=$i,to.prototype=Object.create(zr.prototype),to.prototype.constructor=to,eo.prototype=Object.create(Sr.prototype),eo.prototype.constructor=eo,no.prototype=Object.create(zr.prototype),no.prototype.constructor=no,ro.prototype=Object.create(Sr.prototype),ro.prototype.constructor=ro,io.prototype=Object.create(no.prototype),io.prototype.constructor=io,oo.prototype=Object.create(Sr.prototype),oo.prototype.constructor=oo,ao.prototype=Object.create(no.prototype),ao.prototype.constructor=ao,so.prototype=Object.create(Sr.prototype),so.prototype.constructor=so,co.prototype=Object.create(no.prototype),co.prototype.constructor=co,uo.prototype=Object.create(Sr.prototype),uo.prototype.constructor=uo,lo.prototype=Object.create(no.prototype),lo.prototype.constructor=lo,ho.prototype=Object.create(Sr.prototype),ho.prototype.constructor=ho,fo.prototype=Object.create(zr.prototype),fo.prototype.constructor=fo,po.prototype=Object.create(Sr.prototype),po.prototype.constructor=po,mo.prototype=Object.create(zr.prototype),mo.prototype.constructor=mo,go.prototype=Object.create(Sr.prototype),go.prototype.constructor=go,vo.prototype=Object.create(zr.prototype),vo.prototype.constructor=vo;var yo={area:function(t){for(var e=t.length,n=0,r=e-1,i=0;i=-Number.EPSILON&&w>=-Number.EPSILON&&b>=-Number.EPSILON))return!1;return!0}return function(e,n){var r=e.length;if(r<3)return null;var i,o,a,s=[],c=[],u=[];if(yo.area(e)>0)for(o=0;o2;){if(h--<=0)return console.warn("THREE.ShapeUtils: Unable to triangulate polygon! in triangulate()"),n?u:s;if(l<=(i=o)&&(i=0),l<=(o=i+1)&&(o=0),l<=(a=o+1)&&(a=0),t(e,i,o,a,l,c)){var f,d,p,m,g;for(f=c[i],d=c[o],p=c[a],s.push([e[f],e[d],e[p]]),u.push([c[i],c[o],c[a]]),m=o,g=o+1;g2&&t[e-1].equals(t[0])&&t.pop()}function r(t,e,n){return t.x!==e.x?t.xNumber.EPSILON){var p;if(f>0){if(d<0||d>f)return[];if((p=u*l-c*h)<0||p>f)return[]}else{if(d>0||d0||pM?[]:y===M?o?[]:[g]:x<=M?[g,v]:[g,b])}function o(t,e,n,r){var i=e.x-t.x,o=e.y-t.y,a=n.x-t.x,s=n.y-t.y,c=r.x-t.x,u=r.y-t.y,l=i*s-o*a,h=i*u-o*c;if(Math.abs(l)>Number.EPSILON){var f=c*s-u*a;return l>0?h>=0&&f>=0:h>=0||f>=0}return h>0}n(t),e.forEach(n);for(var a,s,c,u,l,h,f={},d=t.concat(),p=0,m=e.length;pi&&(s=0);var c=o(r[t],r[a],r[s],n[e]);if(!c)return!1;var u=n.length-1,l=e-1;l<0&&(l=u);var h=e+1;return h>u&&(h=0),!!(c=o(n[e],n[l],n[h],r[t]))}function s(t,e){var n,o;for(n=0;n0)return!0;return!1}var c=[];function u(t,n){var r,o,a,s;for(r=0;r0)return!0;return!1}for(var l,h,f,d,p,m,g,v,y,x,_=[],b=0,w=e.length;b0;){if(--E<0){console.log("Infinite Loop! Holes left:"+c.length+", Probably Hole outside Shape!");break}for(h=M;h=0)break;_[m]=!0}if(l>=0)break}}return r}(t,e),v=yo.triangulate(g,!1);for(a=0,s=v.length;a0)&&p.push(b,w,E),(c!==n-1||u0&&v(!0),e>0&&v(!1)),this.setIndex(u),this.addAttribute("position",new Nr(l,3)),this.addAttribute("normal",new Nr(h,3)),this.addAttribute("uv",new Nr(f,2))}function Uo(t,e,n,r,i,o,a){Io.call(this,0,t,e,n,r,i,o,a),this.type="ConeGeometry",this.parameters={radius:t,height:e,radialSegments:n,heightSegments:r,openEnded:i,thetaStart:o,thetaLength:a}}function No(t,e,n,r,i,o,a){Oo.call(this,0,t,e,n,r,i,o,a),this.type="ConeBufferGeometry",this.parameters={radius:t,height:e,radialSegments:n,heightSegments:r,openEnded:i,thetaStart:o,thetaLength:a}}function Do(t,e,n,r){Sr.call(this),this.type="CircleGeometry",this.parameters={radius:t,segments:e,thetaStart:n,thetaLength:r},this.fromBufferGeometry(new Fo(t,e,n,r)),this.mergeVertices()}function Fo(t,e,n,r){zr.call(this),this.type="CircleBufferGeometry",this.parameters={radius:t,segments:e,thetaStart:n,thetaLength:r},t=t||50,e=void 0!==e?Math.max(3,e):8,n=void 0!==n?n:0,r=void 0!==r?r:2*Math.PI;var i,o,a=[],s=[],c=[],u=[],l=new He,h=new Re;for(s.push(0,0,0),c.push(0,0,1),u.push(.5,.5),o=0,i=3;o<=e;o++,i+=3){var f=n+o/e*r;l.x=t*Math.cos(f),l.y=t*Math.sin(f),s.push(l.x,l.y,l.z),c.push(0,0,1),h.x=(s[i]/t+1)/2,h.y=(s[i+1]/t+1)/2,u.push(h.x,h.y)}for(i=1;i<=e;i++)a.push(i,i+1,0);this.setIndex(a),this.addAttribute("position",new Nr(s,3)),this.addAttribute("normal",new Nr(c,3)),this.addAttribute("uv",new Nr(u,2))}xo.prototype=Object.create(Sr.prototype),xo.prototype.constructor=xo,_o.prototype=Object.create(zr.prototype),_o.prototype.constructor=_o,_o.prototype.getArrays=function(){var t=this.getAttribute("position"),e=t?Array.prototype.slice.call(t.array):[],n=this.getAttribute("uv"),r=n?Array.prototype.slice.call(n.array):[],i=this.index;return{position:e,uv:r,index:i?Array.prototype.slice.call(i.array):[]}},_o.prototype.addShapeList=function(t,e){var n=t.length;e.arrays=this.getArrays();for(var r=0;rNumber.EPSILON){var f=Math.sqrt(l),d=Math.sqrt(c*c+u*u),p=e.x-s/f,m=e.y+a/f,g=((n.x-u/d-p)*u-(n.y+c/d-m)*c)/(a*u-s*c),v=(r=p+a*g-t.x)*r+(i=m+s*g-t.y)*i;if(v<=2)return new Re(r,i);o=Math.sqrt(v/2)}else{var y=!1;a>Number.EPSILON?c>Number.EPSILON&&(y=!0):a<-Number.EPSILON?c<-Number.EPSILON&&(y=!0):Math.sign(s)===Math.sign(u)&&(y=!0),y?(r=-s,i=a,o=Math.sqrt(l)):(r=a,i=s,o=Math.sqrt(l/2))}return new Re(r/o,i/o)}for(var H=[],k=0,j=P.length,V=j-1,W=k+1;k=0;I--){for(U=I/y,N=g*Math.cos(U*Math.PI/2),O=v*Math.sin(U*Math.PI/2),k=0,j=P.length;k=0;){n=k,(r=k-1)<0&&(r=t.length-1);var i=0,o=b+2*y;for(i=0;i0||0===t.search(/^data\:image\/jpeg/);o.format=n?jt:Vt,o.needsUpdate=!0,void 0!==e&&e(o)},n,r),o},setCrossOrigin:function(t){return this.crossOrigin=t,this},setPath:function(t){return this.path=t,this}}),ia.prototype=Object.assign(Object.create(hr.prototype),{constructor:ia,isLight:!0,copy:function(t){return hr.prototype.copy.call(this,t),this.color.copy(t.color),this.intensity=t.intensity,this},toJSON:function(t){var e=hr.prototype.toJSON.call(this,t);return e.object.color=this.color.getHex(),e.object.intensity=this.intensity,void 0!==this.groundColor&&(e.object.groundColor=this.groundColor.getHex()),void 0!==this.distance&&(e.object.distance=this.distance),void 0!==this.angle&&(e.object.angle=this.angle),void 0!==this.decay&&(e.object.decay=this.decay),void 0!==this.penumbra&&(e.object.penumbra=this.penumbra),void 0!==this.shadow&&(e.object.shadow=this.shadow.toJSON()),e}}),oa.prototype=Object.assign(Object.create(ia.prototype),{constructor:oa,isHemisphereLight:!0,copy:function(t){return ia.prototype.copy.call(this,t),this.groundColor.copy(t.groundColor),this}}),Object.assign(aa.prototype,{copy:function(t){return this.camera=t.camera.clone(),this.bias=t.bias,this.radius=t.radius,this.mapSize.copy(t.mapSize),this},clone:function(){return(new this.constructor).copy(this)},toJSON:function(){var t={};return 0!==this.bias&&(t.bias=this.bias),1!==this.radius&&(t.radius=this.radius),512===this.mapSize.x&&512===this.mapSize.y||(t.mapSize=this.mapSize.toArray()),t.camera=this.camera.toJSON(!1).object,delete t.camera.matrix,t}}),sa.prototype=Object.assign(Object.create(aa.prototype),{constructor:sa,isSpotLightShadow:!0,update:function(t){var e=this.camera,n=2*Ae.RAD2DEG*t.angle,r=this.mapSize.width/this.mapSize.height,i=t.distance||e.far;n===e.fov&&r===e.aspect&&i===e.far||(e.fov=n,e.aspect=r,e.far=i,e.updateProjectionMatrix())}}),ca.prototype=Object.assign(Object.create(ia.prototype),{constructor:ca,isSpotLight:!0,copy:function(t){return ia.prototype.copy.call(this,t),this.distance=t.distance,this.angle=t.angle,this.penumbra=t.penumbra,this.decay=t.decay,this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}),ua.prototype=Object.assign(Object.create(ia.prototype),{constructor:ua,isPointLight:!0,copy:function(t){return ia.prototype.copy.call(this,t),this.distance=t.distance,this.decay=t.decay,this.shadow=t.shadow.clone(),this}}),la.prototype=Object.assign(Object.create(aa.prototype),{constructor:la}),ha.prototype=Object.assign(Object.create(ia.prototype),{constructor:ha,isDirectionalLight:!0,copy:function(t){return ia.prototype.copy.call(this,t),this.target=t.target.clone(),this.shadow=t.shadow.clone(),this}}),fa.prototype=Object.assign(Object.create(ia.prototype),{constructor:fa,isAmbientLight:!0}),da.prototype=Object.assign(Object.create(ia.prototype),{constructor:da,isRectAreaLight:!0,copy:function(t){return ia.prototype.copy.call(this,t),this.width=t.width,this.height=t.height,this},toJSON:function(t){var e=ia.prototype.toJSON.call(this,t);return e.object.width=this.width,e.object.height=this.height,e}});var pa,ma={arraySlice:function(t,e,n){return ma.isTypedArray(t)?new t.constructor(t.subarray(e,void 0!==n?n:t.length)):t.slice(e,n)},convertArray:function(t,e,n){return!t||!n&&t.constructor===e?t:"number"==typeof e.BYTES_PER_ELEMENT?new e(t):Array.prototype.slice.call(t)},isTypedArray:function(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)},getKeyframeOrder:function(t){for(var e=t.length,n=new Array(e),r=0;r!==e;++r)n[r]=r;return n.sort(function(e,n){return t[e]-t[n]}),n},sortedArray:function(t,e,n){for(var r=t.length,i=new t.constructor(r),o=0,a=0;a!==r;++o)for(var s=n[o]*e,c=0;c!==e;++c)i[a++]=t[s+c];return i},flattenJSON:function(t,e,n,r){for(var i=1,o=t[0];void 0!==o&&void 0===o[r];)o=t[i++];if(void 0!==o){var a=o[r];if(void 0!==a)if(Array.isArray(a))do{void 0!==(a=o[r])&&(e.push(o.time),n.push.apply(n,a)),o=t[i++]}while(void 0!==o);else if(void 0!==a.toArray)do{void 0!==(a=o[r])&&(e.push(o.time),a.toArray(n,n.length)),o=t[i++]}while(void 0!==o);else do{void 0!==(a=o[r])&&(e.push(o.time),n.push(a)),o=t[i++]}while(void 0!==o)}}};function ga(t,e,n,r){this.parameterPositions=t,this._cachedIndex=0,this.resultBuffer=void 0!==r?r:new e.constructor(n),this.sampleValues=e,this.valueSize=n}function va(t,e,n,r){ga.call(this,t,e,n,r),this._weightPrev=-0,this._offsetPrev=-0,this._weightNext=-0,this._offsetNext=-0}function ya(t,e,n,r){ga.call(this,t,e,n,r)}function xa(t,e,n,r){ga.call(this,t,e,n,r)}function _a(t,e,n,r){if(void 0===t)throw new Error("track name is undefined");if(void 0===e||0===e.length)throw new Error("no keyframes in track named "+t);this.name=t,this.times=ma.convertArray(e,this.TimeBufferType),this.values=ma.convertArray(n,this.ValueBufferType),this.setInterpolation(r||this.DefaultInterpolation),this.validate(),this.optimize()}function ba(t,e,n,r){_a.call(this,t,e,n,r)}function wa(t,e,n,r){ga.call(this,t,e,n,r)}function Ma(t,e,n,r){_a.call(this,t,e,n,r)}function Ea(t,e,n,r){_a.call(this,t,e,n,r)}function Ta(t,e,n,r){_a.call(this,t,e,n,r)}function Sa(t,e,n){_a.call(this,t,e,n)}function Aa(t,e,n,r){_a.call(this,t,e,n,r)}function Ra(t,e,n,r){_a.apply(this,arguments)}function La(t,e,n){this.name=t,this.tracks=n,this.duration=void 0!==e?e:-1,this.uuid=Ae.generateUUID(),this.duration<0&&this.resetDuration(),this.optimize()}function Pa(t){this.manager=void 0!==t?t:Ko,this.textures={}}function Ca(t){this.manager=void 0!==t?t:Ko}Object.assign(ga.prototype,{evaluate:function(t){var e=this.parameterPositions,n=this._cachedIndex,r=e[n],i=e[n-1];t:{e:{var o;n:{r:if(!(t=i)break t;var s=e[1];t=(i=e[--n-1]))break e}o=n,n=0}for(;n>>1;te;)--o;if(++o,0!==i||o!==r){i>=o&&(i=(o=Math.max(o,1))-1);var a=this.getValueSize();this.times=ma.arraySlice(n,i,o),this.values=ma.arraySlice(this.values,i*a,o*a)}return this},validate:function(){var t=!0,e=this.getValueSize();e-Math.floor(e)!=0&&(console.error("THREE.KeyframeTrackPrototype: Invalid value size in track.",this),t=!1);var n=this.times,r=this.values,i=n.length;0===i&&(console.error("THREE.KeyframeTrackPrototype: Track is empty.",this),t=!1);for(var o=null,a=0;a!==i;a++){var s=n[a];if("number"==typeof s&&isNaN(s)){console.error("THREE.KeyframeTrackPrototype: Time is not a valid number.",this,a,s),t=!1;break}if(null!==o&&o>s){console.error("THREE.KeyframeTrackPrototype: Out of order keys.",this,a,s,o),t=!1;break}o=s}if(void 0!==r&&ma.isTypedArray(r)){a=0;for(var c=r.length;a!==c;++a){var u=r[a];if(isNaN(u)){console.error("THREE.KeyframeTrackPrototype: Value is not a valid number.",this,a,u),t=!1;break}}}return t},optimize:function(){for(var t=this.times,e=this.values,n=this.getValueSize(),r=this.getInterpolation()===le,i=1,o=t.length-1,a=1;a0){t[i]=t[o];for(p=o*n,m=i*n,f=0;f!==n;++f)e[m+f]=e[p+f];++i}return i!==t.length&&(this.times=ma.arraySlice(t,0,i),this.values=ma.arraySlice(e,0,i*n)),this}},ba.prototype=Object.assign(Object.create(pa),{constructor:ba,ValueTypeName:"vector"}),wa.prototype=Object.assign(Object.create(ga.prototype),{constructor:wa,interpolate_:function(t,e,n,r){for(var i=this.resultBuffer,o=this.sampleValues,a=this.valueSize,s=t*a,c=(n-e)/(r-e),u=s+a;s!==u;s+=4)Ge.slerpFlat(i,0,o,s-a,o,s,c);return i}}),Ma.prototype=Object.assign(Object.create(pa),{constructor:Ma,ValueTypeName:"quaternion",DefaultInterpolation:ue,InterpolantFactoryMethodLinear:function(t){return new wa(this.times,this.values,this.getValueSize(),t)},InterpolantFactoryMethodSmooth:void 0}),Ea.prototype=Object.assign(Object.create(pa),{constructor:Ea,ValueTypeName:"number"}),Ta.prototype=Object.assign(Object.create(pa),{constructor:Ta,ValueTypeName:"string",ValueBufferType:Array,DefaultInterpolation:ce,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Sa.prototype=Object.assign(Object.create(pa),{constructor:Sa,ValueTypeName:"bool",ValueBufferType:Array,DefaultInterpolation:ce,InterpolantFactoryMethodLinear:void 0,InterpolantFactoryMethodSmooth:void 0}),Aa.prototype=Object.assign(Object.create(pa),{constructor:Aa,ValueTypeName:"color"}),Ra.prototype=pa,pa.constructor=Ra,Object.assign(Ra,{parse:function(t){if(void 0===t.type)throw new Error("track type undefined, can not parse");var e=Ra._getTrackTypeForValueTypeName(t.type);if(void 0===t.times){var n=[],r=[];ma.flattenJSON(t.keys,n,r,"value"),t.times=n,t.values=r}return void 0!==e.parse?e.parse(t):new e(t.name,t.times,t.values,t.interpolation)},toJSON:function(t){var e,n=t.constructor;if(void 0!==n.toJSON)e=n.toJSON(t);else{e={name:t.name,times:ma.convertArray(t.times,Array),values:ma.convertArray(t.values,Array)};var r=t.getInterpolation();r!==t.DefaultInterpolation&&(e.interpolation=r)}return e.type=t.ValueTypeName,e},_getTrackTypeForValueTypeName:function(t){switch(t.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return Ea;case"vector":case"vector2":case"vector3":case"vector4":return ba;case"color":return Aa;case"quaternion":return Ma;case"bool":case"boolean":return Sa;case"string":return Ta}throw new Error("Unsupported typeName: "+t)}}),Object.assign(La,{parse:function(t){for(var e=[],n=t.tracks,r=1/(t.fps||1),i=0,o=n.length;i!==o;++i)e.push(Ra.parse(n[i]).scale(r));return new La(t.name,t.duration,e)},toJSON:function(t){for(var e=[],n=t.tracks,r={name:t.name,duration:t.duration,tracks:e},i=0,o=n.length;i!==o;++i)e.push(Ra.toJSON(n[i]));return r},CreateFromMorphTargetSequence:function(t,e,n,r){for(var i=e.length,o=[],a=0;a1){var u=r[h=c[1]];u||(r[h]=u=[]),u.push(s)}}var l=[];for(var h in r)l.push(La.CreateFromMorphTargetSequence(h,r[h],e,n));return l},parseAnimation:function(t,e){if(!t)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;for(var n=function(t,e,n,r,i){if(0!==n.length){var o=[],a=[];ma.flattenJSON(n,o,a,r),0!==o.length&&i.push(new t(e,o,a))}},r=[],i=t.name||"default",o=t.length||-1,a=t.fps||30,s=t.hierarchy||[],c=0;c1?t.skinWeights[r+1]:0,s=n>2?t.skinWeights[r+2]:0,c=n>3?t.skinWeights[r+3]:0;e.skinWeights.push(new Fe(o,a,s,c))}if(t.skinIndices)for(r=0,i=t.skinIndices.length;r1?t.skinIndices[r+1]:0,h=n>2?t.skinIndices[r+2]:0,f=n>3?t.skinIndices[r+3]:0;e.skinIndices.push(new Fe(u,l,h,f))}e.bones=t.bones,e.bones&&e.bones.length>0&&(e.skinWeights.length!==e.skinIndices.length||e.skinIndices.length!==e.vertices.length)&&console.warn("When skinning, number of vertices ("+e.vertices.length+"), skinIndices ("+e.skinIndices.length+"), and skinWeights ("+e.skinWeights.length+") should match.")}(t,n),function(t,e){var n=t.scale;if(void 0!==t.morphTargets)for(var r=0,i=t.morphTargets.length;r0){console.warn('THREE.JSONLoader: "morphColors" no longer supported. Using them as face colors.');var l=e.faces,h=t.morphColors[0].colors;for(r=0,i=l.length;r0&&(e.animations=n)}(t,n),n.computeFaceNormals(),n.computeBoundingSphere(),void 0===t.materials||0===t.materials.length?{geometry:n}:{geometry:n,materials:Fa.prototype.initMaterials(t.materials,e,this.crossOrigin)}}}()}),Object.assign(za.prototype,{load:function(t,e,n,r){""===this.texturePath&&(this.texturePath=t.substring(0,t.lastIndexOf("/")+1));var i=this;new Qo(i.manager).load(t,function(n){var o=null;try{o=JSON.parse(n)}catch(e){return void 0!==r&&r(e),void console.error("THREE:ObjectLoader: Can't parse "+t+".",e.message)}var a=o.metadata;void 0!==a&&void 0!==a.type&&"geometry"!==a.type.toLowerCase()?i.parse(o,e):console.error("THREE.ObjectLoader: Can't load "+t+". Use THREE.JSONLoader instead.")},n,r)},setTexturePath:function(t){this.texturePath=t},setCrossOrigin:function(t){this.crossOrigin=t},parse:function(t,e){var n=this.parseGeometries(t.geometries),r=this.parseImages(t.images,function(){void 0!==e&&e(a)}),i=this.parseTextures(t.textures,r),o=this.parseMaterials(t.materials,i),a=this.parseObject(t.object,n,o);return t.animations&&(a.animations=this.parseAnimations(t.animations)),void 0!==t.images&&0!==t.images.length||void 0!==e&&e(a),a},parseGeometries:function(t){var e={};if(void 0!==t)for(var n=new Ba,r=new Ca,i=0,o=t.length;i0){var o=new ea(new Jo(e));o.setCrossOrigin(this.crossOrigin);for(var a=0,s=t.length;a0?new Gi(s,c):new Yr(s,c);break;case"LOD":i=new Fi;break;case"Line":i=new ki(o(e.geometry),a(e.material),e.mode);break;case"LineLoop":i=new Vi(o(e.geometry),a(e.material));break;case"LineSegments":i=new ji(o(e.geometry),a(e.material));break;case"PointCloud":case"Points":i=new Xi(o(e.geometry),a(e.material));break;case"Sprite":i=new Di(a(e.material));break;case"Group":i=new qi;break;default:i=new hr}if(i.uuid=e.uuid,void 0!==e.name&&(i.name=e.name),void 0!==e.matrix?(t.fromArray(e.matrix),t.decompose(i.position,i.quaternion,i.scale)):(void 0!==e.position&&i.position.fromArray(e.position),void 0!==e.rotation&&i.rotation.fromArray(e.rotation),void 0!==e.quaternion&&i.quaternion.fromArray(e.quaternion),void 0!==e.scale&&i.scale.fromArray(e.scale)),void 0!==e.castShadow&&(i.castShadow=e.castShadow),void 0!==e.receiveShadow&&(i.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.bias&&(i.shadow.bias=e.shadow.bias),void 0!==e.shadow.radius&&(i.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&i.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(i.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(i.visible=e.visible),void 0!==e.userData&&(i.userData=e.userData),void 0!==e.children)for(var u in e.children)i.add(this.parseObject(e.children[u],n,r));if("LOD"===e.type)for(var l=e.levels,h=0;h0)){c=i;break}c=i-1}if(r[i=c]===n)return i/(o-1);var u=r[i];return(i+(n-u)/(r[i+1]-u))/(o-1)},getTangent:function(t){var e=t-1e-4,n=t+1e-4;e<0&&(e=0),n>1&&(n=1);var r=this.getPoint(e);return this.getPoint(n).clone().sub(r).normalize()},getTangentAt:function(t){var e=this.getUtoTmapping(t);return this.getTangent(e)},computeFrenetFrames:function(t,e){var n,r,i,o=new He,a=[],s=[],c=[],u=new He,l=new ke;for(n=0;n<=t;n++)r=n/t,a[n]=this.getTangentAt(r),a[n].normalize();s[0]=new He,c[0]=new He;var h=Number.MAX_VALUE,f=Math.abs(a[0].x),d=Math.abs(a[0].y),p=Math.abs(a[0].z);for(f<=h&&(h=f,o.set(1,0,0)),d<=h&&(h=d,o.set(0,1,0)),p<=h&&o.set(0,0,1),u.crossVectors(a[0],o).normalize(),s[0].crossVectors(a[0],u),c[0].crossVectors(a[0],s[0]),n=1;n<=t;n++)s[n]=s[n-1].clone(),c[n]=c[n-1].clone(),u.crossVectors(a[n-1],a[n]),u.length()>Number.EPSILON&&(u.normalize(),i=Math.acos(Ae.clamp(a[n-1].dot(a[n]),-1,1)),s[n].applyMatrix4(l.makeRotationAxis(u,i))),c[n].crossVectors(a[n],s[n]);if(!0===e)for(i=Math.acos(Ae.clamp(s[0].dot(s[t]),-1,1)),i/=t,a[0].dot(u.crossVectors(s[0],s[t]))>0&&(i=-i),n=1;n<=t;n++)s[n].applyMatrix4(l.makeRotationAxis(a[n],i*n)),c[n].crossVectors(a[n],s[n]);return{tangents:a,normals:s,binormals:c}}}),qa.prototype=Object.create(Xa.prototype),qa.prototype.constructor=qa,qa.prototype.isLineCurve=!0,qa.prototype.getPoint=function(t){if(1===t)return this.v2.clone();var e=this.v2.clone().sub(this.v1);return e.multiplyScalar(t).add(this.v1),e},qa.prototype.getPointAt=function(t){return this.getPoint(t)},qa.prototype.getTangent=function(t){return this.v2.clone().sub(this.v1).normalize()},Ya.prototype=Object.assign(Object.create(Xa.prototype),{constructor:Ya,add:function(t){this.curves.push(t)},closePath:function(){var t=this.curves[0].getPoint(0),e=this.curves[this.curves.length-1].getPoint(1);t.equals(e)||this.curves.push(new qa(e,t))},getPoint:function(t){for(var e=t*this.getLength(),n=this.getCurveLengths(),r=0;r=e){var i=n[r]-e,o=this.curves[r],a=o.getLength(),s=0===a?0:1-i/a;return o.getPointAt(s)}r++}return null},getLength:function(){var t=this.getCurveLengths();return t[t.length-1]},updateArcLengths:function(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()},getCurveLengths:function(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;for(var t=[],e=0,n=0,r=this.curves.length;n1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n},createPointsGeometry:function(t){var e=this.getPoints(t);return this.createGeometry(e)},createSpacedPointsGeometry:function(t){var e=this.getSpacedPoints(t);return this.createGeometry(e)},createGeometry:function(t){for(var e=new Sr,n=0,r=t.length;ne;)n-=e;ne.length-2?e.length-1:r+1],c=e[r>e.length-3?e.length-1:r+2];return new Re(ja(i,o.x,a.x,s.x,c.x),ja(i,o.y,a.y,s.y,c.y))},Ka.prototype=Object.create(Xa.prototype),Ka.prototype.constructor=Ka,Ka.prototype.getPoint=function(t){var e=this.v0,n=this.v1,r=this.v2,i=this.v3;return new Re(Wa(t,e.x,n.x,r.x,i.x),Wa(t,e.y,n.y,r.y,i.y))},Qa.prototype=Object.create(Xa.prototype),Qa.prototype.constructor=Qa,Qa.prototype.getPoint=function(t){var e=this.v0,n=this.v1,r=this.v2;return new Re(Va(t,e.x,n.x,r.x),Va(t,e.y,n.y,r.y))};var $a,ts=Object.assign(Object.create(Ya.prototype),{fromPoints:function(t){this.moveTo(t[0].x,t[0].y);for(var e=1,n=t.length;e0){var u=c.getPoint(0);u.equals(this.currentPoint)||this.lineTo(u.x,u.y)}this.curves.push(c);var l=c.getPoint(1);this.currentPoint.copy(l)}});function es(t){Ya.call(this),this.currentPoint=new Re,t&&this.fromPoints(t)}function ns(){es.apply(this,arguments),this.holes=[]}function rs(){this.subPaths=[],this.currentPath=null}function is(t){this.data=t}function os(t){this.manager=void 0!==t?t:Ko}es.prototype=ts,ts.constructor=es,ns.prototype=Object.assign(Object.create(ts),{constructor:ns,getPointsHoles:function(t){for(var e=[],n=0,r=this.holes.length;nNumber.EPSILON){if(u<0&&(a=e[o],c=-c,s=e[i],u=-u),t.ys.y)continue;if(t.y===a.y){if(t.x===a.x)return!0}else{var l=u*(t.x-a.x)-c*(t.y-a.y);if(0===l)return!0;if(l<0)continue;r=!r}}else{if(t.y!==a.y)continue;if(s.x<=t.x&&t.x<=a.x||a.x<=t.x&&t.x<=s.x)return!0}}return r}var i=yo.isClockWise,o=this.subPaths;if(0===o.length)return[];if(!0===e)return n(o);var a,s,c,u=[];if(1===o.length)return s=o[0],(c=new ns).curves=s.curves,u.push(c),u;var l=!i(o[0].getPoints());l=t?!l:l;var h,f,d=[],p=[],m=[],g=0;p[g]=void 0,m[g]=[];for(var v=0,y=o.length;v1){for(var x=!1,_=[],b=0,w=p.length;b0&&(x||(m=d))}v=0;for(var R=p.length;v0){this.source.connect(this.filters[0]);for(var t=1,e=this.filters.length;t0){this.source.disconnect(this.filters[0]);for(var t=1,e=this.filters.length;t=.5)for(var o=0;o!==i;++o)t[e+o]=t[n+o]},_slerp:function(t,e,n,r){Ge.slerpFlat(t,e,t,e,t,n,r)},_lerp:function(t,e,n,r,i){for(var o=1-r,a=0;a!==i;++a){var s=e+a;t[s]=t[s]*o+t[n+a]*r}}}),Object.assign(Os.prototype,{getValue:function(t,e){this.bind();var n=this._targetGroup.nCachedObjects_,r=this._bindings[n];void 0!==r&&r.getValue(t,e)},setValue:function(t,e){for(var n=this._bindings,r=this._targetGroup.nCachedObjects_,i=n.length;r!==i;++r)n[r].setValue(t,e)},bind:function(){for(var t=this._bindings,e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].bind()},unbind:function(){for(var t=this._bindings,e=this._targetGroup.nCachedObjects_,n=t.length;e!==n;++e)t[e].unbind()}}),Object.assign(Us,{Composite:Os,create:function(t,e,n){return t&&t.isAnimationObjectGroup?new Us.Composite(t,e,n):new Us(t,e,n)},sanitizeNodeName:function(t){return t.replace(/\s/g,"_").replace(/[^\w-]/g,"")},parseTrackName:(gs=new RegExp("^"+/((?:[\w-]+[\/:])*)/.source+/([\w-\.]+)?/.source+/(?:\.([\w-]+)(?:\[(.+)\])?)?/.source+/\.([\w-]+)(?:\[(.+)\])?/.source+"$"),vs=["material","materials","bones"],function(t){var e=gs.exec(t);if(!e)throw new Error("PropertyBinding: Cannot parse trackName: "+t);var n={nodeName:e[2],objectName:e[3],objectIndex:e[4],propertyName:e[5],propertyIndex:e[6]},r=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==r&&-1!==r){var i=n.nodeName.substring(r+1);-1!==vs.indexOf(i)&&(n.nodeName=n.nodeName.substring(0,r),n.objectName=i)}if(null===n.propertyName||0===n.propertyName.length)throw new Error("PropertyBinding: can not parse propertyName from trackName: "+t);return n}),findNode:function(t,e){if(!e||""===e||"root"===e||"."===e||-1===e||e===t.name||e===t.uuid)return t;if(t.skeleton){var n=function(t){for(var n=0;n=n){var h=n++,f=e[h];r[f.uuid]=l,e[l]=f,r[u]=h,e[h]=c;for(var d=0,p=o;d!==p;++d){var m=i[d],g=m[h],v=m[l];m[l]=g,m[h]=v}}}this.nCachedObjects_=n},uncache:function(t){for(var e=this._objects,n=e.length,r=this.nCachedObjects_,i=this._indicesByUUID,o=this._bindings,a=o.length,s=0,c=arguments.length;s!==c;++s){var u=arguments[s].uuid,l=i[u];if(void 0!==l)if(delete i[u],l0)for(var c=this._interpolants,u=this._propertyBindings,l=0,h=c.length;l!==h;++l)c[l].evaluate(a),u[l].accumulate(r,s)}else this._updateWeight(t)},_updateWeight:function(t){var e=0;if(this.enabled){e=this.weight;var n=this._weightInterpolant;if(null!==n){var r=n.evaluate(t)[0];e*=r,t>n.parameterPositions[1]&&(this.stopFading(),0===r&&(this.enabled=!1))}}return this._effectiveWeight=e,e},_updateTimeScale:function(t){var e=0;if(!this.paused){e=this.timeScale;var n=this._timeScaleInterpolant;if(null!==n)e*=n.evaluate(t)[0],t>n.parameterPositions[1]&&(this.stopWarping(),0===e?this.paused=!0:this.timeScale=e)}return this._effectiveTimeScale=e,e},_updateTime:function(t){var e=this.time+t;if(0===t)return e;var n=this._clip.duration,r=this.loop,i=this._loopCount;if(r===oe){-1===i&&(this._loopCount=0,this._setEndings(!0,!0,!1));t:{if(e>=n)e=n;else{if(!(e<0))break t;e=0}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this._mixer.dispatchEvent({type:"finished",action:this,direction:t<0?-1:1})}}else{var o=r===se;if(-1===i&&(t>=0?(i=0,this._setEndings(!0,0===this.repetitions,o)):this._setEndings(0===this.repetitions,!0,o)),e>=n||e<0){var a=Math.floor(e/n);e-=n*a,i+=Math.abs(a);var s=this.repetitions-i;if(s<0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,e=t>0?n:0,this._mixer.dispatchEvent({type:"finished",action:this,direction:t>0?1:-1});else{if(0===s){var c=t<0;this._setEndings(c,!c,o)}else this._setEndings(!1,!1,o);this._loopCount=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:a})}}if(o&&1==(1&i))return this.time=e,n-e}return this.time=e,e},_setEndings:function(t,e,n){var r=this._interpolantSettings;n?(r.endingStart=fe,r.endingEnd=fe):(r.endingStart=t?this.zeroSlopeAtStart?fe:he:de,r.endingEnd=e?this.zeroSlopeAtEnd?fe:he:de)},_scheduleFading:function(t,e,n){var r=this._mixer,i=r.time,o=this._weightInterpolant;null===o&&(o=r._lendControlInterpolant(),this._weightInterpolant=o);var a=o.parameterPositions,s=o.sampleValues;return a[0]=i,s[0]=e,a[1]=i+t,s[1]=n,this}}),Object.assign(Fs.prototype,r.prototype,{_bindAction:function(t,e){var n=t._localRoot||this._root,r=t._clip.tracks,i=r.length,o=t._propertyBindings,a=t._interpolants,s=n.uuid,c=this._bindingsByRootAndName,u=c[s];void 0===u&&(u={},c[s]=u);for(var l=0;l!==i;++l){var h=r[l],f=h.name,d=u[f];if(void 0!==d)o[l]=d;else{if(void 0!==(d=o[l])){null===d._cacheIndex&&(++d.referenceCount,this._addInactiveBinding(d,s,f));continue}var p=e&&e._propertyBindings[l].binding.parsedPath;++(d=new Is(Us.create(n,f,p),h.ValueTypeName,h.getValueSize())).referenceCount,this._addInactiveBinding(d,s,f),o[l]=d}a[l].resultBuffer=d.buffer}},_activateAction:function(t){if(!this._isActiveAction(t)){if(null===t._cacheIndex){var e=(t._localRoot||this._root).uuid,n=t._clip.uuid,r=this._actionsByClip[n];this._bindAction(t,r&&r.knownActions[0]),this._addInactiveAction(t,n,e)}for(var i=t._propertyBindings,o=0,a=i.length;o!==a;++o){var s=i[o];0==s.useCount++&&(this._lendBinding(s),s.saveOriginalState())}this._lendAction(t)}},_deactivateAction:function(t){if(this._isActiveAction(t)){for(var e=t._propertyBindings,n=0,r=e.length;n!==r;++n){var i=e[n];0==--i.useCount&&(i.restoreOriginalState(),this._takeBackBinding(i))}this._takeBackAction(t)}},_initMemoryManager:function(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;var t=this;this.stats={actions:{get total(){return t._actions.length},get inUse(){return t._nActiveActions}},bindings:{get total(){return t._bindings.length},get inUse(){return t._nActiveBindings}},controlInterpolants:{get total(){return t._controlInterpolants.length},get inUse(){return t._nActiveControlInterpolants}}}},_isActiveAction:function(t){var e=t._cacheIndex;return null!==e&&e1)r[c=s[1]]||(r[c]={start:1/0,end:-1/0}),o<(u=r[c]).start&&(u.start=o),o>u.end&&(u.end=o),e||(e=c)}for(var c in r){var u=r[c];this.createAnimation(c,u.start,u.end,t)}this.firstAnimation=e},Js.prototype.setAnimationDirectionForward=function(t){var e=this.animationsMap[t];e&&(e.direction=1,e.directionBackwards=!1)},Js.prototype.setAnimationDirectionBackward=function(t){var e=this.animationsMap[t];e&&(e.direction=-1,e.directionBackwards=!0)},Js.prototype.setAnimationFPS=function(t,e){var n=this.animationsMap[t];n&&(n.fps=e,n.duration=(n.end-n.start)/n.fps)},Js.prototype.setAnimationDuration=function(t,e){var n=this.animationsMap[t];n&&(n.duration=e,n.fps=(n.end-n.start)/n.duration)},Js.prototype.setAnimationWeight=function(t,e){var n=this.animationsMap[t];n&&(n.weight=e)},Js.prototype.setAnimationTime=function(t,e){var n=this.animationsMap[t];n&&(n.time=e)},Js.prototype.getAnimationTime=function(t){var e=0,n=this.animationsMap[t];return n&&(e=n.time),e},Js.prototype.getAnimationDuration=function(t){var e=-1,n=this.animationsMap[t];return n&&(e=n.duration),e},Js.prototype.playAnimation=function(t){var e=this.animationsMap[t];e?(e.time=0,e.active=!0):console.warn("THREE.MorphBlendMesh: animation["+t+"] undefined in .playAnimation()")},Js.prototype.stopAnimation=function(t){var e=this.animationsMap[t];e&&(e.active=!1)},Js.prototype.update=function(t){for(var e=0,n=this.animationsList.length;er.duration||r.time<0)&&(r.direction*=-1,r.time>r.duration&&(r.time=r.duration,r.directionBackwards=!0),r.time<0&&(r.time=0,r.directionBackwards=!1)):(r.time=r.time%r.duration,r.time<0&&(r.time+=r.duration));var o=r.start+Ae.clamp(Math.floor(r.time/i),0,r.length-1),a=r.weight;o!==r.currentFrame&&(this.morphTargetInfluences[r.lastFrame]=0,this.morphTargetInfluences[r.currentFrame]=1*a,this.morphTargetInfluences[o]=0,r.lastFrame=r.currentFrame,r.currentFrame=o);var s=r.time%i/i;r.directionBackwards&&(s=1-s),r.currentFrame!==r.lastFrame?(this.morphTargetInfluences[r.currentFrame]=s*a,this.morphTargetInfluences[r.lastFrame]=(1-s)*a):this.morphTargetInfluences[r.currentFrame]=a}}},Ks.prototype=Object.create(hr.prototype),Ks.prototype.constructor=Ks,Ks.prototype.isImmediateRenderObject=!0,Qs.prototype=Object.create(ji.prototype),Qs.prototype.constructor=Qs,Qs.prototype.update=function(){var t=new He,e=new He,n=new $n;return function(){var r=["a","b","c"];this.object.updateMatrixWorld(!0),n.getNormalMatrix(this.object.matrixWorld);var i=this.object.matrixWorld,o=this.geometry.attributes.position,a=this.object.geometry;if(a&&a.isGeometry)for(var s=a.vertices,c=a.faces,u=0,l=0,h=c.length;l.99999?this.quaternion.set(0,0,0,1):t.y<-.99999?this.quaternion.set(1,0,0,0):(Ms.set(t.z,0,-t.x).normalize(),ws=Math.acos(t.y),this.quaternion.setFromAxisAngle(Ms,ws))}),lc.prototype.setLength=function(t,e,n){void 0===e&&(e=.2*t),void 0===n&&(n=.2*e),this.line.scale.set(1,Math.max(0,t-e),1),this.line.updateMatrix(),this.cone.scale.set(n,e,n),this.cone.position.y=t,this.cone.updateMatrix()},lc.prototype.setColor=function(t){this.line.material.color.copy(t),this.cone.material.color.copy(t)},hc.prototype=Object.create(ji.prototype),hc.prototype.constructor=hc;var dc=new He,pc=new fc,mc=new fc,gc=new fc;function vc(t){Xa.call(this),t.length<2&&console.warn("THREE.CatmullRomCurve3: Points array needs at least two entries."),this.points=t||[],this.closed=!1}function yc(t,e,n,r){Xa.call(this),this.v0=t,this.v1=e,this.v2=n,this.v3=r}function xc(t,e,n){Xa.call(this),this.v0=t,this.v1=e,this.v2=n}function _c(t,e){Xa.call(this),this.v1=t,this.v2=e}function bc(t,e,n,r,i,o){Za.call(this,t,e,n,n,r,i,o)}vc.prototype=Object.create(Xa.prototype),vc.prototype.constructor=vc,vc.prototype.getPoint=function(t){var e,n,r,i,o=this.points,a=o.length,s=(a-(this.closed?0:1))*t,c=Math.floor(s),u=s-c;if(this.closed?c+=c>0?0:(Math.floor(Math.abs(c)/o.length)+1)*o.length:0===u&&c===a-1&&(c=a-2,u=1),this.closed||c>0?e=o[(c-1)%a]:(dc.subVectors(o[0],o[1]).add(o[0]),e=dc),n=o[c%a],r=o[(c+1)%a],this.closed||c+2 - * Copyright JS Foundation and other contributors - * Released under MIT license - * Based on Underscore.js 1.8.3 - * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors - */(function(){var o,a=200,s="Unsupported core-js use. Try https://npms.io/search?q=ponyfill.",c="Expected a function",u="__lodash_hash_undefined__",l=500,h="__lodash_placeholder__",f=1,d=2,p=4,m=1,g=2,v=1,y=2,x=4,_=8,b=16,w=32,M=64,E=128,T=256,S=512,A=30,R="...",L=800,P=16,C=1,I=2,O=1/0,U=9007199254740991,N=1.7976931348623157e308,D=NaN,F=4294967295,B=F-1,z=F>>>1,G=[["ary",E],["bind",v],["bindKey",y],["curry",_],["curryRight",b],["flip",S],["partial",w],["partialRight",M],["rearg",T]],H="[object Arguments]",k="[object Array]",j="[object AsyncFunction]",V="[object Boolean]",W="[object Date]",X="[object DOMException]",q="[object Error]",Y="[object Function]",Z="[object GeneratorFunction]",J="[object Map]",K="[object Number]",Q="[object Null]",$="[object Object]",tt="[object Proxy]",et="[object RegExp]",nt="[object Set]",rt="[object String]",it="[object Symbol]",ot="[object Undefined]",at="[object WeakMap]",st="[object WeakSet]",ct="[object ArrayBuffer]",ut="[object DataView]",lt="[object Float32Array]",ht="[object Float64Array]",ft="[object Int8Array]",dt="[object Int16Array]",pt="[object Int32Array]",mt="[object Uint8Array]",gt="[object Uint8ClampedArray]",vt="[object Uint16Array]",yt="[object Uint32Array]",xt=/\b__p \+= '';/g,_t=/\b(__p \+=) '' \+/g,bt=/(__e\(.*?\)|\b__t\)) \+\n'';/g,wt=/&(?:amp|lt|gt|quot|#39);/g,Mt=/[&<>"']/g,Et=RegExp(wt.source),Tt=RegExp(Mt.source),St=/<%-([\s\S]+?)%>/g,At=/<%([\s\S]+?)%>/g,Rt=/<%=([\s\S]+?)%>/g,Lt=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,Pt=/^\w*$/,Ct=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,It=/[\\^$.*+?()[\]{}|]/g,Ot=RegExp(It.source),Ut=/^\s+|\s+$/g,Nt=/^\s+/,Dt=/\s+$/,Ft=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Bt=/\{\n\/\* \[wrapped with (.+)\] \*/,zt=/,? & /,Gt=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,Ht=/\\(\\)?/g,kt=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,jt=/\w*$/,Vt=/^[-+]0x[0-9a-f]+$/i,Wt=/^0b[01]+$/i,Xt=/^\[object .+?Constructor\]$/,qt=/^0o[0-7]+$/i,Yt=/^(?:0|[1-9]\d*)$/,Zt=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,Jt=/($^)/,Kt=/['\n\r\u2028\u2029\\]/g,Qt="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",$t="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",te="[\\ud800-\\udfff]",ee="["+$t+"]",ne="["+Qt+"]",re="\\d+",ie="[\\u2700-\\u27bf]",oe="[a-z\\xdf-\\xf6\\xf8-\\xff]",ae="[^\\ud800-\\udfff"+$t+re+"\\u2700-\\u27bfa-z\\xdf-\\xf6\\xf8-\\xffA-Z\\xc0-\\xd6\\xd8-\\xde]",se="\\ud83c[\\udffb-\\udfff]",ce="[^\\ud800-\\udfff]",ue="(?:\\ud83c[\\udde6-\\uddff]){2}",le="[\\ud800-\\udbff][\\udc00-\\udfff]",he="[A-Z\\xc0-\\xd6\\xd8-\\xde]",fe="(?:"+oe+"|"+ae+")",de="(?:"+he+"|"+ae+")",pe="(?:"+ne+"|"+se+")"+"?",me="[\\ufe0e\\ufe0f]?"+pe+("(?:\\u200d(?:"+[ce,ue,le].join("|")+")[\\ufe0e\\ufe0f]?"+pe+")*"),ge="(?:"+[ie,ue,le].join("|")+")"+me,ve="(?:"+[ce+ne+"?",ne,ue,le,te].join("|")+")",ye=RegExp("['’]","g"),xe=RegExp(ne,"g"),_e=RegExp(se+"(?="+se+")|"+ve+me,"g"),be=RegExp([he+"?"+oe+"+(?:['’](?:d|ll|m|re|s|t|ve))?(?="+[ee,he,"$"].join("|")+")",de+"+(?:['’](?:D|LL|M|RE|S|T|VE))?(?="+[ee,he+fe,"$"].join("|")+")",he+"?"+fe+"+(?:['’](?:d|ll|m|re|s|t|ve))?",he+"+(?:['’](?:D|LL|M|RE|S|T|VE))?","\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",re,ge].join("|"),"g"),we=RegExp("[\\u200d\\ud800-\\udfff"+Qt+"\\ufe0e\\ufe0f]"),Me=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,Ee=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Te=-1,Se={};Se[lt]=Se[ht]=Se[ft]=Se[dt]=Se[pt]=Se[mt]=Se[gt]=Se[vt]=Se[yt]=!0,Se[H]=Se[k]=Se[ct]=Se[V]=Se[ut]=Se[W]=Se[q]=Se[Y]=Se[J]=Se[K]=Se[$]=Se[et]=Se[nt]=Se[rt]=Se[at]=!1;var Ae={};Ae[H]=Ae[k]=Ae[ct]=Ae[ut]=Ae[V]=Ae[W]=Ae[lt]=Ae[ht]=Ae[ft]=Ae[dt]=Ae[pt]=Ae[J]=Ae[K]=Ae[$]=Ae[et]=Ae[nt]=Ae[rt]=Ae[it]=Ae[mt]=Ae[gt]=Ae[vt]=Ae[yt]=!0,Ae[q]=Ae[Y]=Ae[at]=!1;var Re={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},Le=parseFloat,Pe=parseInt,Ce="object"==typeof t&&t&&t.Object===Object&&t,Ie="object"==typeof self&&self&&self.Object===Object&&self,Oe=Ce||Ie||Function("return this")(),Ue=e&&!e.nodeType&&e,Ne=Ue&&"object"==typeof r&&r&&!r.nodeType&&r,De=Ne&&Ne.exports===Ue,Fe=De&&Ce.process,Be=function(){try{var t=Ne&&Ne.require&&Ne.require("util").types;return t||Fe&&Fe.binding&&Fe.binding("util")}catch(t){}}(),ze=Be&&Be.isArrayBuffer,Ge=Be&&Be.isDate,He=Be&&Be.isMap,ke=Be&&Be.isRegExp,je=Be&&Be.isSet,Ve=Be&&Be.isTypedArray;function We(t,e,n){switch(n.length){case 0:return t.call(e);case 1:return t.call(e,n[0]);case 2:return t.call(e,n[0],n[1]);case 3:return t.call(e,n[0],n[1],n[2])}return t.apply(e,n)}function Xe(t,e,n,r){for(var i=-1,o=null==t?0:t.length;++i-1}function Qe(t,e,n){for(var r=-1,i=null==t?0:t.length;++r-1;);return n}function bn(t,e){for(var n=t.length;n--&&cn(e,t[n],0)>-1;);return n}var wn=dn({"À":"A","Á":"A","Â":"A","Ã":"A","Ä":"A","Å":"A","à":"a","á":"a","â":"a","ã":"a","ä":"a","å":"a","Ç":"C","ç":"c","Ð":"D","ð":"d","È":"E","É":"E","Ê":"E","Ë":"E","è":"e","é":"e","ê":"e","ë":"e","Ì":"I","Í":"I","Î":"I","Ï":"I","ì":"i","í":"i","î":"i","ï":"i","Ñ":"N","ñ":"n","Ò":"O","Ó":"O","Ô":"O","Õ":"O","Ö":"O","Ø":"O","ò":"o","ó":"o","ô":"o","õ":"o","ö":"o","ø":"o","Ù":"U","Ú":"U","Û":"U","Ü":"U","ù":"u","ú":"u","û":"u","ü":"u","Ý":"Y","ý":"y","ÿ":"y","Æ":"Ae","æ":"ae","Þ":"Th","þ":"th","ß":"ss","Ā":"A","Ă":"A","Ą":"A","ā":"a","ă":"a","ą":"a","Ć":"C","Ĉ":"C","Ċ":"C","Č":"C","ć":"c","ĉ":"c","ċ":"c","č":"c","Ď":"D","Đ":"D","ď":"d","đ":"d","Ē":"E","Ĕ":"E","Ė":"E","Ę":"E","Ě":"E","ē":"e","ĕ":"e","ė":"e","ę":"e","ě":"e","Ĝ":"G","Ğ":"G","Ġ":"G","Ģ":"G","ĝ":"g","ğ":"g","ġ":"g","ģ":"g","Ĥ":"H","Ħ":"H","ĥ":"h","ħ":"h","Ĩ":"I","Ī":"I","Ĭ":"I","Į":"I","İ":"I","ĩ":"i","ī":"i","ĭ":"i","į":"i","ı":"i","Ĵ":"J","ĵ":"j","Ķ":"K","ķ":"k","ĸ":"k","Ĺ":"L","Ļ":"L","Ľ":"L","Ŀ":"L","Ł":"L","ĺ":"l","ļ":"l","ľ":"l","ŀ":"l","ł":"l","Ń":"N","Ņ":"N","Ň":"N","Ŋ":"N","ń":"n","ņ":"n","ň":"n","ŋ":"n","Ō":"O","Ŏ":"O","Ő":"O","ō":"o","ŏ":"o","ő":"o","Ŕ":"R","Ŗ":"R","Ř":"R","ŕ":"r","ŗ":"r","ř":"r","Ś":"S","Ŝ":"S","Ş":"S","Š":"S","ś":"s","ŝ":"s","ş":"s","š":"s","Ţ":"T","Ť":"T","Ŧ":"T","ţ":"t","ť":"t","ŧ":"t","Ũ":"U","Ū":"U","Ŭ":"U","Ů":"U","Ű":"U","Ų":"U","ũ":"u","ū":"u","ŭ":"u","ů":"u","ű":"u","ų":"u","Ŵ":"W","ŵ":"w","Ŷ":"Y","ŷ":"y","Ÿ":"Y","Ź":"Z","Ż":"Z","Ž":"Z","ź":"z","ż":"z","ž":"z","IJ":"IJ","ij":"ij","Œ":"Oe","œ":"oe","ʼn":"'n","ſ":"s"}),Mn=dn({"&":"&","<":"<",">":">",'"':""","'":"'"});function En(t){return"\\"+Re[t]}function Tn(t){return we.test(t)}function Sn(t){var e=-1,n=Array(t.size);return t.forEach(function(t,r){n[++e]=[r,t]}),n}function An(t,e){return function(n){return t(e(n))}}function Rn(t,e){for(var n=-1,r=t.length,i=0,o=[];++n",""":'"',"'":"'"});var Un=function t(e){var n,r=(e=null==e?Oe:Un.defaults(Oe.Object(),e,Un.pick(Oe,Ee))).Array,i=e.Date,Qt=e.Error,$t=e.Function,te=e.Math,ee=e.Object,ne=e.RegExp,re=e.String,ie=e.TypeError,oe=r.prototype,ae=$t.prototype,se=ee.prototype,ce=e["__core-js_shared__"],ue=ae.toString,le=se.hasOwnProperty,he=0,fe=(n=/[^.]+$/.exec(ce&&ce.keys&&ce.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",de=se.toString,pe=ue.call(ee),me=Oe._,ge=ne("^"+ue.call(le).replace(It,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),ve=De?e.Buffer:o,_e=e.Symbol,we=e.Uint8Array,Re=ve?ve.allocUnsafe:o,Ce=An(ee.getPrototypeOf,ee),Ie=ee.create,Ue=se.propertyIsEnumerable,Ne=oe.splice,Fe=_e?_e.isConcatSpreadable:o,Be=_e?_e.iterator:o,on=_e?_e.toStringTag:o,dn=function(){try{var t=zo(ee,"defineProperty");return t({},"",{}),t}catch(t){}}(),Nn=e.clearTimeout!==Oe.clearTimeout&&e.clearTimeout,Dn=i&&i.now!==Oe.Date.now&&i.now,Fn=e.setTimeout!==Oe.setTimeout&&e.setTimeout,Bn=te.ceil,zn=te.floor,Gn=ee.getOwnPropertySymbols,Hn=ve?ve.isBuffer:o,kn=e.isFinite,jn=oe.join,Vn=An(ee.keys,ee),Wn=te.max,Xn=te.min,qn=i.now,Yn=e.parseInt,Zn=te.random,Jn=oe.reverse,Kn=zo(e,"DataView"),Qn=zo(e,"Map"),$n=zo(e,"Promise"),tr=zo(e,"Set"),er=zo(e,"WeakMap"),nr=zo(ee,"create"),rr=er&&new er,ir={},or=ha(Kn),ar=ha(Qn),sr=ha($n),cr=ha(tr),ur=ha(er),lr=_e?_e.prototype:o,hr=lr?lr.valueOf:o,fr=lr?lr.toString:o;function dr(t){if(Rs(t)&&!vs(t)&&!(t instanceof vr)){if(t instanceof gr)return t;if(le.call(t,"__wrapped__"))return fa(t)}return new gr(t)}var pr=function(){function t(){}return function(e){if(!As(e))return{};if(Ie)return Ie(e);t.prototype=e;var n=new t;return t.prototype=o,n}}();function mr(){}function gr(t,e){this.__wrapped__=t,this.__actions__=[],this.__chain__=!!e,this.__index__=0,this.__values__=o}function vr(t){this.__wrapped__=t,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=F,this.__views__=[]}function yr(t){var e=-1,n=null==t?0:t.length;for(this.clear();++e=e?t:e)),t}function Nr(t,e,n,r,i,a){var s,c=e&f,u=e&d,l=e&p;if(n&&(s=i?n(t,r,i,a):n(t)),s!==o)return s;if(!As(t))return t;var h=vs(t);if(h){if(s=function(t){var e=t.length,n=new t.constructor(e);return e&&"string"==typeof t[0]&&le.call(t,"index")&&(n.index=t.index,n.input=t.input),n}(t),!c)return no(t,s)}else{var m=ko(t),g=m==Y||m==Z;if(bs(t))return Ji(t,c);if(m==$||m==H||g&&!i){if(s=u||g?{}:Vo(t),!c)return u?function(t,e){return ro(t,Ho(t),e)}(t,function(t,e){return t&&ro(e,oc(e),t)}(s,t)):function(t,e){return ro(t,Go(t),e)}(t,Cr(s,t))}else{if(!Ae[m])return i?t:{};s=function(t,e,n){var r,i=t.constructor;switch(e){case ct:return Ki(t);case V:case W:return new i(+t);case ut:return function(t,e){var n=e?Ki(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.byteLength)}(t,n);case lt:case ht:case ft:case dt:case pt:case mt:case gt:case vt:case yt:return Qi(t,n);case J:return new i;case K:case rt:return new i(t);case et:return function(t){var e=new t.constructor(t.source,jt.exec(t));return e.lastIndex=t.lastIndex,e}(t);case nt:return new i;case it:return r=t,hr?ee(hr.call(r)):{}}}(t,m,c)}}a||(a=new wr);var v=a.get(t);if(v)return v;if(a.set(t,s),Os(t))return t.forEach(function(r){s.add(Nr(r,e,n,r,t,a))}),s;if(Ls(t))return t.forEach(function(r,i){s.set(i,Nr(r,e,n,i,t,a))}),s;var y=h?o:(l?u?Io:Co:u?oc:ic)(t);return qe(y||t,function(r,i){y&&(r=t[i=r]),Rr(s,i,Nr(r,e,n,i,t,a))}),s}function Dr(t,e,n){var r=n.length;if(null==t)return!r;for(t=ee(t);r--;){var i=n[r],a=e[i],s=t[i];if(s===o&&!(i in t)||!a(s))return!1}return!0}function Fr(t,e,n){if("function"!=typeof t)throw new ie(c);return ia(function(){t.apply(o,n)},e)}function Br(t,e,n,r){var i=-1,o=Ke,s=!0,c=t.length,u=[],l=e.length;if(!c)return u;n&&(e=$e(e,vn(n))),r?(o=Qe,s=!1):e.length>=a&&(o=xn,s=!1,e=new br(e));t:for(;++i-1},xr.prototype.set=function(t,e){var n=this.__data__,r=Lr(n,t);return r<0?(++this.size,n.push([t,e])):n[r][1]=e,this},_r.prototype.clear=function(){this.size=0,this.__data__={hash:new yr,map:new(Qn||xr),string:new yr}},_r.prototype.delete=function(t){var e=Fo(this,t).delete(t);return this.size-=e?1:0,e},_r.prototype.get=function(t){return Fo(this,t).get(t)},_r.prototype.has=function(t){return Fo(this,t).has(t)},_r.prototype.set=function(t,e){var n=Fo(this,t),r=n.size;return n.set(t,e),this.size+=n.size==r?0:1,this},br.prototype.add=br.prototype.push=function(t){return this.__data__.set(t,u),this},br.prototype.has=function(t){return this.__data__.has(t)},wr.prototype.clear=function(){this.__data__=new xr,this.size=0},wr.prototype.delete=function(t){var e=this.__data__,n=e.delete(t);return this.size=e.size,n},wr.prototype.get=function(t){return this.__data__.get(t)},wr.prototype.has=function(t){return this.__data__.has(t)},wr.prototype.set=function(t,e){var n=this.__data__;if(n instanceof xr){var r=n.__data__;if(!Qn||r.length0&&n(s)?e>1?Vr(s,e-1,n,r,i):tn(i,s):r||(i[i.length]=s)}return i}var Wr=so(),Xr=so(!0);function qr(t,e){return t&&Wr(t,e,ic)}function Yr(t,e){return t&&Xr(t,e,ic)}function Zr(t,e){return Je(e,function(e){return Es(t[e])})}function Jr(t,e){for(var n=0,r=(e=Xi(e,t)).length;null!=t&&ne}function ti(t,e){return null!=t&&le.call(t,e)}function ei(t,e){return null!=t&&e in ee(t)}function ni(t,e,n){for(var i=n?Qe:Ke,a=t[0].length,s=t.length,c=s,u=r(s),l=1/0,h=[];c--;){var f=t[c];c&&e&&(f=$e(f,vn(e))),l=Xn(f.length,l),u[c]=!n&&(e||a>=120&&f.length>=120)?new br(c&&f):o}f=t[0];var d=-1,p=u[0];t:for(;++d=s)return c;var u=n[r];return c*("desc"==u?-1:1)}}return t.index-e.index}(t,e,n)})}function yi(t,e,n){for(var r=-1,i=e.length,o={};++r-1;)s!==t&&Ne.call(s,c,1),Ne.call(t,c,1);return t}function _i(t,e){for(var n=t?e.length:0,r=n-1;n--;){var i=e[n];if(n==r||i!==o){var o=i;Xo(i)?Ne.call(t,i,1):Bi(t,i)}}return t}function bi(t,e){return t+zn(Zn()*(e-t+1))}function wi(t,e){var n="";if(!t||e<1||e>U)return n;do{e%2&&(n+=t),(e=zn(e/2))&&(t+=t)}while(e);return n}function Mi(t,e){return oa(ta(t,e,Pc),t+"")}function Ei(t){return Er(dc(t))}function Ti(t,e){var n=dc(t);return ca(n,Ur(e,0,n.length))}function Si(t,e,n,r){if(!As(t))return t;for(var i=-1,a=(e=Xi(e,t)).length,s=a-1,c=t;null!=c&&++io?0:o+e),(n=n>o?o:n)<0&&(n+=o),o=e>n?0:n-e>>>0,e>>>=0;for(var a=r(o);++i>>1,a=t[o];null!==a&&!Ns(a)&&(n?a<=e:a=a){var l=e?null:Mo(t);if(l)return Ln(l);s=!1,i=xn,u=new br}else u=e?[]:c;t:for(;++r=r?t:Pi(t,e,n)}var Zi=Nn||function(t){return Oe.clearTimeout(t)};function Ji(t,e){if(e)return t.slice();var n=t.length,r=Re?Re(n):new t.constructor(n);return t.copy(r),r}function Ki(t){var e=new t.constructor(t.byteLength);return new we(e).set(new we(t)),e}function Qi(t,e){var n=e?Ki(t.buffer):t.buffer;return new t.constructor(n,t.byteOffset,t.length)}function $i(t,e){if(t!==e){var n=t!==o,r=null===t,i=t==t,a=Ns(t),s=e!==o,c=null===e,u=e==e,l=Ns(e);if(!c&&!l&&!a&&t>e||a&&s&&u&&!c&&!l||r&&s&&u||!n&&u||!i)return 1;if(!r&&!a&&!l&&t1?n[i-1]:o,s=i>2?n[2]:o;for(a=t.length>3&&"function"==typeof a?(i--,a):o,s&&qo(n[0],n[1],s)&&(a=i<3?o:a,i=1),e=ee(e);++r-1?i[a?e[s]:s]:o}}function fo(t){return Po(function(e){var n=e.length,r=n,i=gr.prototype.thru;for(t&&e.reverse();r--;){var a=e[r];if("function"!=typeof a)throw new ie(c);if(i&&!s&&"wrapper"==Uo(a))var s=new gr([],!0)}for(r=s?r:n;++r1&&_.reverse(),f&&lc))return!1;var l=a.get(t);if(l&&a.get(e))return l==e;var h=-1,f=!0,d=n&g?new br:o;for(a.set(t,e),a.set(e,t);++h-1&&t%1==0&&t1?"& ":"")+e[r],e=e.join(n>2?", ":" "),t.replace(Ft,"{\n/* [wrapped with "+e+"] */\n")}(r,function(t,e){return qe(G,function(n){var r="_."+n[0];e&n[1]&&!Ke(t,r)&&t.push(r)}),t.sort()}(function(t){var e=t.match(Bt);return e?e[1].split(zt):[]}(r),n)))}function sa(t){var e=0,n=0;return function(){var r=qn(),i=P-(r-n);if(n=r,i>0){if(++e>=L)return arguments[0]}else e=0;return t.apply(o,arguments)}}function ca(t,e){var n=-1,r=t.length,i=r-1;for(e=e===o?r:e;++n1?t[e-1]:o;return n="function"==typeof n?(t.pop(),n):o,Ia(t,n)});function za(t){var e=dr(t);return e.__chain__=!0,e}function Ga(t,e){return e(t)}var Ha=Po(function(t){var e=t.length,n=e?t[0]:0,r=this.__wrapped__,i=function(e){return Or(e,t)};return!(e>1||this.__actions__.length)&&r instanceof vr&&Xo(n)?((r=r.slice(n,+n+(e?1:0))).__actions__.push({func:Ga,args:[i],thisArg:o}),new gr(r,this.__chain__).thru(function(t){return e&&!t.length&&t.push(o),t})):this.thru(i)});var ka=io(function(t,e,n){le.call(t,n)?++t[n]:Ir(t,n,1)});var ja=ho(ga),Va=ho(va);function Wa(t,e){return(vs(t)?qe:zr)(t,Do(e,3))}function Xa(t,e){return(vs(t)?Ye:Gr)(t,Do(e,3))}var qa=io(function(t,e,n){le.call(t,n)?t[n].push(e):Ir(t,n,[e])});var Ya=Mi(function(t,e,n){var i=-1,o="function"==typeof e,a=xs(t)?r(t.length):[];return zr(t,function(t){a[++i]=o?We(e,t,n):ri(t,e,n)}),a}),Za=io(function(t,e,n){Ir(t,n,e)});function Ja(t,e){return(vs(t)?$e:fi)(t,Do(e,3))}var Ka=io(function(t,e,n){t[n?0:1].push(e)},function(){return[[],[]]});var Qa=Mi(function(t,e){if(null==t)return[];var n=e.length;return n>1&&qo(t,e[0],e[1])?e=[]:n>2&&qo(e[0],e[1],e[2])&&(e=[e[0]]),vi(t,Vr(e,1),[])}),$a=Dn||function(){return Oe.Date.now()};function ts(t,e,n){return e=n?o:e,e=t&&null==e?t.length:e,To(t,E,o,o,o,o,e)}function es(t,e){var n;if("function"!=typeof e)throw new ie(c);return t=Hs(t),function(){return--t>0&&(n=e.apply(this,arguments)),t<=1&&(e=o),n}}var ns=Mi(function(t,e,n){var r=v;if(n.length){var i=Rn(n,No(ns));r|=w}return To(t,r,e,n,i)}),rs=Mi(function(t,e,n){var r=v|y;if(n.length){var i=Rn(n,No(rs));r|=w}return To(e,r,t,n,i)});function is(t,e,n){var r,i,a,s,u,l,h=0,f=!1,d=!1,p=!0;if("function"!=typeof t)throw new ie(c);function m(e){var n=r,a=i;return r=i=o,h=e,s=t.apply(a,n)}function g(t){var n=t-l;return l===o||n>=e||n<0||d&&t-h>=a}function v(){var t=$a();if(g(t))return y(t);u=ia(v,function(t){var n=e-(t-l);return d?Xn(n,a-(t-h)):n}(t))}function y(t){return u=o,p&&r?m(t):(r=i=o,s)}function x(){var t=$a(),n=g(t);if(r=arguments,i=this,l=t,n){if(u===o)return function(t){return h=t,u=ia(v,e),f?m(t):s}(l);if(d)return u=ia(v,e),m(l)}return u===o&&(u=ia(v,e)),s}return e=js(e)||0,As(n)&&(f=!!n.leading,a=(d="maxWait"in n)?Wn(js(n.maxWait)||0,e):a,p="trailing"in n?!!n.trailing:p),x.cancel=function(){u!==o&&Zi(u),h=0,r=l=i=u=o},x.flush=function(){return u===o?s:y($a())},x}var os=Mi(function(t,e){return Fr(t,1,e)}),as=Mi(function(t,e,n){return Fr(t,js(e)||0,n)});function ss(t,e){if("function"!=typeof t||null!=e&&"function"!=typeof e)throw new ie(c);var n=function(){var r=arguments,i=e?e.apply(this,r):r[0],o=n.cache;if(o.has(i))return o.get(i);var a=t.apply(this,r);return n.cache=o.set(i,a)||o,a};return n.cache=new(ss.Cache||_r),n}function cs(t){if("function"!=typeof t)throw new ie(c);return function(){var e=arguments;switch(e.length){case 0:return!t.call(this);case 1:return!t.call(this,e[0]);case 2:return!t.call(this,e[0],e[1]);case 3:return!t.call(this,e[0],e[1],e[2])}return!t.apply(this,e)}}ss.Cache=_r;var us=qi(function(t,e){var n=(e=1==e.length&&vs(e[0])?$e(e[0],vn(Do())):$e(Vr(e,1),vn(Do()))).length;return Mi(function(r){for(var i=-1,o=Xn(r.length,n);++i=e}),gs=ii(function(){return arguments}())?ii:function(t){return Rs(t)&&le.call(t,"callee")&&!Ue.call(t,"callee")},vs=r.isArray,ys=ze?vn(ze):function(t){return Rs(t)&&Qr(t)==ct};function xs(t){return null!=t&&Ss(t.length)&&!Es(t)}function _s(t){return Rs(t)&&xs(t)}var bs=Hn||jc,ws=Ge?vn(Ge):function(t){return Rs(t)&&Qr(t)==W};function Ms(t){if(!Rs(t))return!1;var e=Qr(t);return e==q||e==X||"string"==typeof t.message&&"string"==typeof t.name&&!Cs(t)}function Es(t){if(!As(t))return!1;var e=Qr(t);return e==Y||e==Z||e==j||e==tt}function Ts(t){return"number"==typeof t&&t==Hs(t)}function Ss(t){return"number"==typeof t&&t>-1&&t%1==0&&t<=U}function As(t){var e=typeof t;return null!=t&&("object"==e||"function"==e)}function Rs(t){return null!=t&&"object"==typeof t}var Ls=He?vn(He):function(t){return Rs(t)&&ko(t)==J};function Ps(t){return"number"==typeof t||Rs(t)&&Qr(t)==K}function Cs(t){if(!Rs(t)||Qr(t)!=$)return!1;var e=Ce(t);if(null===e)return!0;var n=le.call(e,"constructor")&&e.constructor;return"function"==typeof n&&n instanceof n&&ue.call(n)==pe}var Is=ke?vn(ke):function(t){return Rs(t)&&Qr(t)==et};var Os=je?vn(je):function(t){return Rs(t)&&ko(t)==nt};function Us(t){return"string"==typeof t||!vs(t)&&Rs(t)&&Qr(t)==rt}function Ns(t){return"symbol"==typeof t||Rs(t)&&Qr(t)==it}var Ds=Ve?vn(Ve):function(t){return Rs(t)&&Ss(t.length)&&!!Se[Qr(t)]};var Fs=_o(hi),Bs=_o(function(t,e){return t<=e});function zs(t){if(!t)return[];if(xs(t))return Us(t)?In(t):no(t);if(Be&&t[Be])return function(t){for(var e,n=[];!(e=t.next()).done;)n.push(e.value);return n}(t[Be]());var e=ko(t);return(e==J?Sn:e==nt?Ln:dc)(t)}function Gs(t){return t?(t=js(t))===O||t===-O?(t<0?-1:1)*N:t==t?t:0:0===t?t:0}function Hs(t){var e=Gs(t),n=e%1;return e==e?n?e-n:e:0}function ks(t){return t?Ur(Hs(t),0,F):0}function js(t){if("number"==typeof t)return t;if(Ns(t))return D;if(As(t)){var e="function"==typeof t.valueOf?t.valueOf():t;t=As(e)?e+"":e}if("string"!=typeof t)return 0===t?t:+t;t=t.replace(Ut,"");var n=Wt.test(t);return n||qt.test(t)?Pe(t.slice(2),n?2:8):Vt.test(t)?D:+t}function Vs(t){return ro(t,oc(t))}function Ws(t){return null==t?"":Di(t)}var Xs=oo(function(t,e){if(Ko(e)||xs(e))ro(e,ic(e),t);else for(var n in e)le.call(e,n)&&Rr(t,n,e[n])}),qs=oo(function(t,e){ro(e,oc(e),t)}),Ys=oo(function(t,e,n,r){ro(e,oc(e),t,r)}),Zs=oo(function(t,e,n,r){ro(e,ic(e),t,r)}),Js=Po(Or);var Ks=Mi(function(t,e){t=ee(t);var n=-1,r=e.length,i=r>2?e[2]:o;for(i&&qo(e[0],e[1],i)&&(r=1);++n1),e}),ro(t,Io(t),n),r&&(n=Nr(n,f|d|p,Ro));for(var i=e.length;i--;)Bi(n,e[i]);return n});var uc=Po(function(t,e){return null==t?{}:function(t,e){return yi(t,e,function(e,n){return tc(t,n)})}(t,e)});function lc(t,e){if(null==t)return{};var n=$e(Io(t),function(t){return[t]});return e=Do(e),yi(t,n,function(t,n){return e(t,n[0])})}var hc=Eo(ic),fc=Eo(oc);function dc(t){return null==t?[]:yn(t,ic(t))}var pc=uo(function(t,e,n){return e=e.toLowerCase(),t+(n?mc(e):e)});function mc(t){return Mc(Ws(t).toLowerCase())}function gc(t){return(t=Ws(t))&&t.replace(Zt,wn).replace(xe,"")}var vc=uo(function(t,e,n){return t+(n?"-":"")+e.toLowerCase()}),yc=uo(function(t,e,n){return t+(n?" ":"")+e.toLowerCase()}),xc=co("toLowerCase");var _c=uo(function(t,e,n){return t+(n?"_":"")+e.toLowerCase()});var bc=uo(function(t,e,n){return t+(n?" ":"")+Mc(e)});var wc=uo(function(t,e,n){return t+(n?" ":"")+e.toUpperCase()}),Mc=co("toUpperCase");function Ec(t,e,n){return t=Ws(t),(e=n?o:e)===o?function(t){return Me.test(t)}(t)?function(t){return t.match(be)||[]}(t):function(t){return t.match(Gt)||[]}(t):t.match(e)||[]}var Tc=Mi(function(t,e){try{return We(t,o,e)}catch(t){return Ms(t)?t:new Qt(t)}}),Sc=Po(function(t,e){return qe(e,function(e){e=la(e),Ir(t,e,ns(t[e],t))}),t});function Ac(t){return function(){return t}}var Rc=fo(),Lc=fo(!0);function Pc(t){return t}function Cc(t){return ci("function"==typeof t?t:Nr(t,f))}var Ic=Mi(function(t,e){return function(n){return ri(n,t,e)}}),Oc=Mi(function(t,e){return function(n){return ri(t,n,e)}});function Uc(t,e,n){var r=ic(e),i=Zr(e,r);null!=n||As(e)&&(i.length||!r.length)||(n=e,e=t,t=this,i=Zr(e,ic(e)));var o=!(As(n)&&"chain"in n&&!n.chain),a=Es(t);return qe(i,function(n){var r=e[n];t[n]=r,a&&(t.prototype[n]=function(){var e=this.__chain__;if(o||e){var n=t(this.__wrapped__);return(n.__actions__=no(this.__actions__)).push({func:r,args:arguments,thisArg:t}),n.__chain__=e,n}return r.apply(t,tn([this.value()],arguments))})}),t}function Nc(){}var Dc=vo($e),Fc=vo(Ze),Bc=vo(rn);function zc(t){return Yo(t)?fn(la(t)):function(t){return function(e){return Jr(e,t)}}(t)}var Gc=xo(),Hc=xo(!0);function kc(){return[]}function jc(){return!1}var Vc=go(function(t,e){return t+e},0),Wc=wo("ceil"),Xc=go(function(t,e){return t/e},1),qc=wo("floor");var Yc,Zc=go(function(t,e){return t*e},1),Jc=wo("round"),Kc=go(function(t,e){return t-e},0);return dr.after=function(t,e){if("function"!=typeof e)throw new ie(c);return t=Hs(t),function(){if(--t<1)return e.apply(this,arguments)}},dr.ary=ts,dr.assign=Xs,dr.assignIn=qs,dr.assignInWith=Ys,dr.assignWith=Zs,dr.at=Js,dr.before=es,dr.bind=ns,dr.bindAll=Sc,dr.bindKey=rs,dr.castArray=function(){if(!arguments.length)return[];var t=arguments[0];return vs(t)?t:[t]},dr.chain=za,dr.chunk=function(t,e,n){e=(n?qo(t,e,n):e===o)?1:Wn(Hs(e),0);var i=null==t?0:t.length;if(!i||e<1)return[];for(var a=0,s=0,c=r(Bn(i/e));ai?0:i+n),(r=r===o||r>i?i:Hs(r))<0&&(r+=i),r=n>r?0:ks(r);n>>0)?(t=Ws(t))&&("string"==typeof e||null!=e&&!Is(e))&&!(e=Di(e))&&Tn(t)?Yi(In(t),0,n):t.split(e,n):[]},dr.spread=function(t,e){if("function"!=typeof t)throw new ie(c);return e=null==e?0:Wn(Hs(e),0),Mi(function(n){var r=n[e],i=Yi(n,0,e);return r&&tn(i,r),We(t,this,i)})},dr.tail=function(t){var e=null==t?0:t.length;return e?Pi(t,1,e):[]},dr.take=function(t,e,n){return t&&t.length?Pi(t,0,(e=n||e===o?1:Hs(e))<0?0:e):[]},dr.takeRight=function(t,e,n){var r=null==t?0:t.length;return r?Pi(t,(e=r-(e=n||e===o?1:Hs(e)))<0?0:e,r):[]},dr.takeRightWhile=function(t,e){return t&&t.length?Gi(t,Do(e,3),!1,!0):[]},dr.takeWhile=function(t,e){return t&&t.length?Gi(t,Do(e,3)):[]},dr.tap=function(t,e){return e(t),t},dr.throttle=function(t,e,n){var r=!0,i=!0;if("function"!=typeof t)throw new ie(c);return As(n)&&(r="leading"in n?!!n.leading:r,i="trailing"in n?!!n.trailing:i),is(t,e,{leading:r,maxWait:e,trailing:i})},dr.thru=Ga,dr.toArray=zs,dr.toPairs=hc,dr.toPairsIn=fc,dr.toPath=function(t){return vs(t)?$e(t,la):Ns(t)?[t]:no(ua(Ws(t)))},dr.toPlainObject=Vs,dr.transform=function(t,e,n){var r=vs(t),i=r||bs(t)||Ds(t);if(e=Do(e,4),null==n){var o=t&&t.constructor;n=i?r?new o:[]:As(t)&&Es(o)?pr(Ce(t)):{}}return(i?qe:qr)(t,function(t,r,i){return e(n,t,r,i)}),n},dr.unary=function(t){return ts(t,1)},dr.union=Ra,dr.unionBy=La,dr.unionWith=Pa,dr.uniq=function(t){return t&&t.length?Fi(t):[]},dr.uniqBy=function(t,e){return t&&t.length?Fi(t,Do(e,2)):[]},dr.uniqWith=function(t,e){return e="function"==typeof e?e:o,t&&t.length?Fi(t,o,e):[]},dr.unset=function(t,e){return null==t||Bi(t,e)},dr.unzip=Ca,dr.unzipWith=Ia,dr.update=function(t,e,n){return null==t?t:zi(t,e,Wi(n))},dr.updateWith=function(t,e,n,r){return r="function"==typeof r?r:o,null==t?t:zi(t,e,Wi(n),r)},dr.values=dc,dr.valuesIn=function(t){return null==t?[]:yn(t,oc(t))},dr.without=Oa,dr.words=Ec,dr.wrap=function(t,e){return ls(Wi(e),t)},dr.xor=Ua,dr.xorBy=Na,dr.xorWith=Da,dr.zip=Fa,dr.zipObject=function(t,e){return ji(t||[],e||[],Rr)},dr.zipObjectDeep=function(t,e){return ji(t||[],e||[],Si)},dr.zipWith=Ba,dr.entries=hc,dr.entriesIn=fc,dr.extend=qs,dr.extendWith=Ys,Uc(dr,dr),dr.add=Vc,dr.attempt=Tc,dr.camelCase=pc,dr.capitalize=mc,dr.ceil=Wc,dr.clamp=function(t,e,n){return n===o&&(n=e,e=o),n!==o&&(n=(n=js(n))==n?n:0),e!==o&&(e=(e=js(e))==e?e:0),Ur(js(t),e,n)},dr.clone=function(t){return Nr(t,p)},dr.cloneDeep=function(t){return Nr(t,f|p)},dr.cloneDeepWith=function(t,e){return Nr(t,f|p,e="function"==typeof e?e:o)},dr.cloneWith=function(t,e){return Nr(t,p,e="function"==typeof e?e:o)},dr.conformsTo=function(t,e){return null==e||Dr(t,e,ic(e))},dr.deburr=gc,dr.defaultTo=function(t,e){return null==t||t!=t?e:t},dr.divide=Xc,dr.endsWith=function(t,e,n){t=Ws(t),e=Di(e);var r=t.length,i=n=n===o?r:Ur(Hs(n),0,r);return(n-=e.length)>=0&&t.slice(n,i)==e},dr.eq=ds,dr.escape=function(t){return(t=Ws(t))&&Tt.test(t)?t.replace(Mt,Mn):t},dr.escapeRegExp=function(t){return(t=Ws(t))&&Ot.test(t)?t.replace(It,"\\$&"):t},dr.every=function(t,e,n){var r=vs(t)?Ze:Hr;return n&&qo(t,e,n)&&(e=o),r(t,Do(e,3))},dr.find=ja,dr.findIndex=ga,dr.findKey=function(t,e){return an(t,Do(e,3),qr)},dr.findLast=Va,dr.findLastIndex=va,dr.findLastKey=function(t,e){return an(t,Do(e,3),Yr)},dr.floor=qc,dr.forEach=Wa,dr.forEachRight=Xa,dr.forIn=function(t,e){return null==t?t:Wr(t,Do(e,3),oc)},dr.forInRight=function(t,e){return null==t?t:Xr(t,Do(e,3),oc)},dr.forOwn=function(t,e){return t&&qr(t,Do(e,3))},dr.forOwnRight=function(t,e){return t&&Yr(t,Do(e,3))},dr.get=$s,dr.gt=ps,dr.gte=ms,dr.has=function(t,e){return null!=t&&jo(t,e,ti)},dr.hasIn=tc,dr.head=xa,dr.identity=Pc,dr.includes=function(t,e,n,r){t=xs(t)?t:dc(t),n=n&&!r?Hs(n):0;var i=t.length;return n<0&&(n=Wn(i+n,0)),Us(t)?n<=i&&t.indexOf(e,n)>-1:!!i&&cn(t,e,n)>-1},dr.indexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=null==n?0:Hs(n);return i<0&&(i=Wn(r+i,0)),cn(t,e,i)},dr.inRange=function(t,e,n){return e=Gs(e),n===o?(n=e,e=0):n=Gs(n),function(t,e,n){return t>=Xn(e,n)&&t=-U&&t<=U},dr.isSet=Os,dr.isString=Us,dr.isSymbol=Ns,dr.isTypedArray=Ds,dr.isUndefined=function(t){return t===o},dr.isWeakMap=function(t){return Rs(t)&&ko(t)==at},dr.isWeakSet=function(t){return Rs(t)&&Qr(t)==st},dr.join=function(t,e){return null==t?"":jn.call(t,e)},dr.kebabCase=vc,dr.last=Ma,dr.lastIndexOf=function(t,e,n){var r=null==t?0:t.length;if(!r)return-1;var i=r;return n!==o&&(i=(i=Hs(n))<0?Wn(r+i,0):Xn(i,r-1)),e==e?function(t,e,n){for(var r=n+1;r--;)if(t[r]===e)return r;return r}(t,e,i):sn(t,ln,i,!0)},dr.lowerCase=yc,dr.lowerFirst=xc,dr.lt=Fs,dr.lte=Bs,dr.max=function(t){return t&&t.length?kr(t,Pc,$r):o},dr.maxBy=function(t,e){return t&&t.length?kr(t,Do(e,2),$r):o},dr.mean=function(t){return hn(t,Pc)},dr.meanBy=function(t,e){return hn(t,Do(e,2))},dr.min=function(t){return t&&t.length?kr(t,Pc,hi):o},dr.minBy=function(t,e){return t&&t.length?kr(t,Do(e,2),hi):o},dr.stubArray=kc,dr.stubFalse=jc,dr.stubObject=function(){return{}},dr.stubString=function(){return""},dr.stubTrue=function(){return!0},dr.multiply=Zc,dr.nth=function(t,e){return t&&t.length?gi(t,Hs(e)):o},dr.noConflict=function(){return Oe._===this&&(Oe._=me),this},dr.noop=Nc,dr.now=$a,dr.pad=function(t,e,n){t=Ws(t);var r=(e=Hs(e))?Cn(t):0;if(!e||r>=e)return t;var i=(e-r)/2;return yo(zn(i),n)+t+yo(Bn(i),n)},dr.padEnd=function(t,e,n){t=Ws(t);var r=(e=Hs(e))?Cn(t):0;return e&&re){var r=t;t=e,e=r}if(n||t%1||e%1){var i=Zn();return Xn(t+i*(e-t+Le("1e-"+((i+"").length-1))),e)}return bi(t,e)},dr.reduce=function(t,e,n){var r=vs(t)?en:pn,i=arguments.length<3;return r(t,Do(e,4),n,i,zr)},dr.reduceRight=function(t,e,n){var r=vs(t)?nn:pn,i=arguments.length<3;return r(t,Do(e,4),n,i,Gr)},dr.repeat=function(t,e,n){return e=(n?qo(t,e,n):e===o)?1:Hs(e),wi(Ws(t),e)},dr.replace=function(){var t=arguments,e=Ws(t[0]);return t.length<3?e:e.replace(t[1],t[2])},dr.result=function(t,e,n){var r=-1,i=(e=Xi(e,t)).length;for(i||(i=1,t=o);++rU)return[];var n=F,r=Xn(t,F);e=Do(e),t-=F;for(var i=gn(r,e);++n=a)return t;var c=n-Cn(r);if(c<1)return r;var u=s?Yi(s,0,c).join(""):t.slice(0,c);if(i===o)return u+r;if(s&&(c+=u.length-c),Is(i)){if(t.slice(c).search(i)){var l,h=u;for(i.global||(i=ne(i.source,Ws(jt.exec(i))+"g")),i.lastIndex=0;l=i.exec(h);)var f=l.index;u=u.slice(0,f===o?c:f)}}else if(t.indexOf(Di(i),c)!=c){var d=u.lastIndexOf(i);d>-1&&(u=u.slice(0,d))}return u+r},dr.unescape=function(t){return(t=Ws(t))&&Et.test(t)?t.replace(wt,On):t},dr.uniqueId=function(t){var e=++he;return Ws(t)+e},dr.upperCase=wc,dr.upperFirst=Mc,dr.each=Wa,dr.eachRight=Xa,dr.first=xa,Uc(dr,(Yc={},qr(dr,function(t,e){le.call(dr.prototype,e)||(Yc[e]=t)}),Yc),{chain:!1}),dr.VERSION="4.17.11",qe(["bind","bindKey","curry","curryRight","partial","partialRight"],function(t){dr[t].placeholder=dr}),qe(["drop","take"],function(t,e){vr.prototype[t]=function(n){n=n===o?1:Wn(Hs(n),0);var r=this.__filtered__&&!e?new vr(this):this.clone();return r.__filtered__?r.__takeCount__=Xn(n,r.__takeCount__):r.__views__.push({size:Xn(n,F),type:t+(r.__dir__<0?"Right":"")}),r},vr.prototype[t+"Right"]=function(e){return this.reverse()[t](e).reverse()}}),qe(["filter","map","takeWhile"],function(t,e){var n=e+1,r=n==C||3==n;vr.prototype[t]=function(t){var e=this.clone();return e.__iteratees__.push({iteratee:Do(t,3),type:n}),e.__filtered__=e.__filtered__||r,e}}),qe(["head","last"],function(t,e){var n="take"+(e?"Right":"");vr.prototype[t]=function(){return this[n](1).value()[0]}}),qe(["initial","tail"],function(t,e){var n="drop"+(e?"":"Right");vr.prototype[t]=function(){return this.__filtered__?new vr(this):this[n](1)}}),vr.prototype.compact=function(){return this.filter(Pc)},vr.prototype.find=function(t){return this.filter(t).head()},vr.prototype.findLast=function(t){return this.reverse().find(t)},vr.prototype.invokeMap=Mi(function(t,e){return"function"==typeof t?new vr(this):this.map(function(n){return ri(n,t,e)})}),vr.prototype.reject=function(t){return this.filter(cs(Do(t)))},vr.prototype.slice=function(t,e){t=Hs(t);var n=this;return n.__filtered__&&(t>0||e<0)?new vr(n):(t<0?n=n.takeRight(-t):t&&(n=n.drop(t)),e!==o&&(n=(e=Hs(e))<0?n.dropRight(-e):n.take(e-t)),n)},vr.prototype.takeRightWhile=function(t){return this.reverse().takeWhile(t).reverse()},vr.prototype.toArray=function(){return this.take(F)},qr(vr.prototype,function(t,e){var n=/^(?:filter|find|map|reject)|While$/.test(e),r=/^(?:head|last)$/.test(e),i=dr[r?"take"+("last"==e?"Right":""):e],a=r||/^find/.test(e);i&&(dr.prototype[e]=function(){var e=this.__wrapped__,s=r?[1]:arguments,c=e instanceof vr,u=s[0],l=c||vs(e),h=function(t){var e=i.apply(dr,tn([t],s));return r&&f?e[0]:e};l&&n&&"function"==typeof u&&1!=u.length&&(c=l=!1);var f=this.__chain__,d=!!this.__actions__.length,p=a&&!f,m=c&&!d;if(!a&&l){e=m?e:new vr(this);var g=t.apply(e,s);return g.__actions__.push({func:Ga,args:[h],thisArg:o}),new gr(g,f)}return p&&m?t.apply(this,s):(g=this.thru(h),p?r?g.value()[0]:g.value():g)})}),qe(["pop","push","shift","sort","splice","unshift"],function(t){var e=oe[t],n=/^(?:push|sort|unshift)$/.test(t)?"tap":"thru",r=/^(?:pop|shift)$/.test(t);dr.prototype[t]=function(){var t=arguments;if(r&&!this.__chain__){var i=this.value();return e.apply(vs(i)?i:[],t)}return this[n](function(n){return e.apply(vs(n)?n:[],t)})}}),qr(vr.prototype,function(t,e){var n=dr[e];if(n){var r=n.name+"";(ir[r]||(ir[r]=[])).push({name:e,func:n})}}),ir[po(o,y).name]=[{name:"wrapper",func:o}],vr.prototype.clone=function(){var t=new vr(this.__wrapped__);return t.__actions__=no(this.__actions__),t.__dir__=this.__dir__,t.__filtered__=this.__filtered__,t.__iteratees__=no(this.__iteratees__),t.__takeCount__=this.__takeCount__,t.__views__=no(this.__views__),t},vr.prototype.reverse=function(){if(this.__filtered__){var t=new vr(this);t.__dir__=-1,t.__filtered__=!0}else(t=this.clone()).__dir__*=-1;return t},vr.prototype.value=function(){var t=this.__wrapped__.value(),e=this.__dir__,n=vs(t),r=e<0,i=n?t.length:0,o=function(t,e,n){for(var r=-1,i=n.length;++r=this.__values__.length;return{done:t,value:t?o:this.__values__[this.__index__++]}},dr.prototype.plant=function(t){for(var e,n=this;n instanceof mr;){var r=fa(n);r.__index__=0,r.__values__=o,e?i.__wrapped__=r:e=r;var i=r;n=n.__wrapped__}return i.__wrapped__=t,e},dr.prototype.reverse=function(){var t=this.__wrapped__;if(t instanceof vr){var e=t;return this.__actions__.length&&(e=new vr(this)),(e=e.reverse()).__actions__.push({func:Ga,args:[Aa],thisArg:o}),new gr(e,this.__chain__)}return this.thru(Aa)},dr.prototype.toJSON=dr.prototype.valueOf=dr.prototype.value=function(){return Hi(this.__wrapped__,this.__actions__)},dr.prototype.first=dr.prototype.head,Be&&(dr.prototype[Be]=function(){return this}),dr}();Oe._=Un,(i=function(){return Un}.call(e,n,e,r))===o||(r.exports=i)}).call(this)}).call(this,n(4),n(5)(t))},function(t,e,n){"use strict";const r=n(0);t.exports={Coins:new class{constructor(){this.setRadius(3),this.coinMaterial=new r.MeshStandardMaterial({color:13938487,roughness:.5,metalness:1})}setRadius(t){this.coinRadius=t,this.coinGeometry=this.generateCoinGeometry()}generateCoinGeometry(){let t=.18*this.coinRadius,e=.16*this.coinRadius,n=t/4,i=n+.25,o={amount:n,steps:1,curveSegments:24,bevelEnabled:!0,bevelSize:.25,bevelThickness:.25,bevelSegments:2},a=new r.TorusGeometry(this.coinRadius,.1*this.coinRadius,8,64),s=new r.CylinderGeometry(this.coinRadius,this.coinRadius,t,16);s.rotateX(Math.PI/2);let c=new r.Shape;c.moveTo(-3,1),c.lineTo(-3,2),c.bezierCurveTo(-2.75,1.75,-.75,3.5,-1,4),c.lineTo(1,4),c.lineTo(1,-3),c.lineTo(3,-3),c.lineTo(3,-4),c.lineTo(-3,-4),c.lineTo(-3,-3),c.lineTo(-1,-3),c.lineTo(-1,2),c.bezierCurveTo(-.8,1.8,-2.8,.8,-3,1);let u=new r.ExtrudeGeometry(c,o),l=new r.Mesh(u,this.coinMaterial);l.position.z-=n/2*e,l.position.z+=t/2,l.position.z-=i/2*e,l.scale.set(e,e,e);let h=new r.Shape;h.moveTo(0,4),h.bezierCurveTo(4,4,4,-4,0,-4),h.bezierCurveTo(-4,-4,-4,4,0,4);let f=new r.Path;f.moveTo(0,2.5),f.bezierCurveTo(-2.5,2.5,-2.5,-2.5,0,-2.5),f.bezierCurveTo(2.5,-2.5,2.5,2.5,0,2.5),h.holes.push(f);let d=new r.Shape;d.moveTo(-3.5,-2.5),d.lineTo(2.5,3.5),d.lineTo(3.5,2.5),d.lineTo(-2.5,-3.5),d.lineTo(-3.5,-2.5);let p=new r.ExtrudeGeometry(h,o),m=new r.ExtrudeGeometry(d,o),g=new r.Mesh(p,this.coinMaterial),v=new r.Mesh(m,this.coinMaterial);g.scale.set(e,e,e),v.scale.set(e,e,e),g.position.z-=n/2*e,v.position.z-=n/2*e,g.position.z-=t/2,v.position.z-=t/2,g.position.z+=i/2*e,v.position.z+=i/2*e;let y=new r.Geometry;return y.merge(a),y.merge(s),y.mergeMesh(l),y.mergeMesh(g),y.mergeMesh(v),y}createCoin(){return new r.Mesh(this.coinGeometry,this.coinMaterial)}createCoins(t=1){let e=[];for(let n=0;n=1&&this.animationCallbacks.shift()}.bind(this))}addAnimation(t){return this.animationCallbacks.push(t),this}animate(){requestAnimationFrame(this.getAnimateFunction());for(let t of this.animationCallbacks)t();this.renderer.render(this.scene,this.camera)}getAnimateFunction(){return this.animateFunction||(this.animateFunction=this.animate.bind(this)),this.animateFunction}showAxes(t={}){let e=r.assign({x:0,y:0,z:0,distance:1e5},t),n=new i.LineBasicMaterial({color:16711680,linewidth:1}),o=new i.LineBasicMaterial({color:65280,linewidth:1}),a=new i.LineBasicMaterial({color:255,linewidth:1}),s=new i.Geometry,c=new i.Geometry,u=new i.Geometry;s.vertices.push(new i.Vector3(e.distance,e.y,e.z),new i.Vector3(-1*e.distance,e.y,e.z)),c.vertices.push(new i.Vector3(e.x,e.distance,e.z),new i.Vector3(e.x,-1*e.distance,e.z)),u.vertices.push(new i.Vector3(e.x,e.y,e.distance),new i.Vector3(e.x,e.y,-1*e.distance));var l=new i.Line(s,n),h=new i.Line(c,o),f=new i.Line(u,a);this.scene.add(l,h,f)}}}},function(t,e,n){"use strict";const r=n(1),i=n(0),{Coins:o}=n(2);t.exports={CoinTunnel:class{constructor(t={}){this.opts=r.assign({radius:100,length:400,totalCoins:500,coinRotationSpeed:.05,pathSpeedMin:.001,pathSpeedMax:.001,rotateTunnel:!1,tunnelRotationSpeed:5e-4,excludeCenter:!0,scalePoint:.05,debug:!1},t),this.createTunnel(),this.initCoins()}createTunnel(){if(this.calculateCoinPaths(),this.tunnel=this.createTunnelMesh(),this.opts.debug){let t=new i.LineBasicMaterial({color:16711680,transparent:!0,opacity:.5});for(let e of this.coinPaths){let n=new i.Geometry;n.vertices.push(e.v1,e.v2);let r=new i.Line(n,t);this.tunnel.add(r)}}}createTunnelMesh(){let t=new i.CylinderGeometry(this.opts.radius,this.opts.radius,this.opts.length,16),e=new i.MeshBasicMaterial({color:65280,wireframe:!0,transparent:!0,opacity:this.opts.debug?.5:0});return new i.Mesh(t,e)}getCoinSpeed(){let t=this.opts.pathSpeedMax-this.opts.pathSpeedMin;return Math.random()*t+this.opts.pathSpeedMin}setCoinRotation(t){t.rotation.y=Math.PI*(.5*Math.random()),t.rotation.x=Math.PI*(.5*Math.random()),t.rotation.z=Math.PI*(.5*Math.random()),t.rotationPerStep={x:2*(.5-Math.random())*this.opts.coinRotationSpeed,z:2*(.5-Math.random())*this.opts.coinRotationSpeed}}randomizeCoinPath(t){t.path=r.sample(this.coinPaths);let e=t.path.getPoint(t.pathProgress);t.position.x=e.x,t.position.y=e.y,t.position.z=e.z}initCoins(){this.coins=[];for(let t=0;t{t.rotation[n]+=e}),t.pathProgress+=t.pathProgressPerStep;let e=t.path.getPoint(t.pathProgress);t.position.y=e.y,t.pathProgress>1&&(t.pathProgress=0,this.setCoinRotation(t),this.randomizeCoinPath(t));let n=t.pathProgress<=this.opts.scalePoint?Math.max(t.pathProgress/this.opts.scalePoint,1e-4):1;t.scale.set(n,n,n)}this.opts.rotateTunnel&&(this.tunnel.rotation.y+=this.opts.tunnelRotationSpeed)}}}},function(t,e,n){const r=n(0);r.OrbitControls=function(t,e){var n,i,o,a,s;this.object=t,this.domElement=void 0!==e?e:document,this.enabled=!0,this.target=new r.Vector3,this.minDistance=0,this.maxDistance=1/0,this.minZoom=0,this.maxZoom=1/0,this.minPolarAngle=0,this.maxPolarAngle=Math.PI,this.minAzimuthAngle=-1/0,this.maxAzimuthAngle=1/0,this.enableDamping=!1,this.dampingFactor=.25,this.enableZoom=!0,this.zoomSpeed=1,this.enableRotate=!0,this.rotateSpeed=1,this.enablePan=!0,this.keyPanSpeed=7,this.autoRotate=!1,this.autoRotateSpeed=2,this.enableKeys=!0,this.keys={LEFT:37,UP:38,RIGHT:39,BOTTOM:40},this.mouseButtons={ORBIT:r.MOUSE.LEFT,ZOOM:r.MOUSE.MIDDLE,PAN:r.MOUSE.RIGHT},this.target0=this.target.clone(),this.position0=this.object.position.clone(),this.zoom0=this.object.zoom,this.getPolarAngle=function(){return m.phi},this.getAzimuthalAngle=function(){return m.theta},this.saveState=function(){c.target0.copy(c.target),c.position0.copy(c.object.position),c.zoom0=c.object.zoom},this.reset=function(){c.target.copy(c.target0),c.object.position.copy(c.position0),c.object.zoom=c.zoom0,c.object.updateProjectionMatrix(),c.dispatchEvent(u),c.update(),d=f.NONE},this.update=(n=new r.Vector3,i=(new r.Quaternion).setFromUnitVectors(t.up,new r.Vector3(0,1,0)),o=i.clone().inverse(),a=new r.Vector3,s=new r.Quaternion,function(){var t=c.object.position;return n.copy(t).sub(c.target),n.applyQuaternion(i),m.setFromVector3(n),c.autoRotate&&d===f.NONE&&P(2*Math.PI/60/60*c.autoRotateSpeed),m.theta+=g.theta,m.phi+=g.phi,m.theta=Math.max(c.minAzimuthAngle,Math.min(c.maxAzimuthAngle,m.theta)),m.phi=Math.max(c.minPolarAngle,Math.min(c.maxPolarAngle,m.phi)),m.makeSafe(),m.radius*=v,m.radius=Math.max(c.minDistance,Math.min(c.maxDistance,m.radius)),c.target.add(y),n.setFromSpherical(m),n.applyQuaternion(o),t.copy(c.target).add(n),c.object.lookAt(c.target),!0===c.enableDamping?(g.theta*=1-c.dampingFactor,g.phi*=1-c.dampingFactor):g.set(0,0,0),v=1,y.set(0,0,0),!!(x||a.distanceToSquared(c.object.position)>p||8*(1-s.dot(c.object.quaternion))>p)&&(c.dispatchEvent(u),a.copy(c.object.position),s.copy(c.object.quaternion),x=!1,!0)}),this.dispose=function(){c.domElement.removeEventListener("contextmenu",X,!1),c.domElement.removeEventListener("mousedown",B,!1),c.domElement.removeEventListener("wheel",H,!1),c.domElement.removeEventListener("touchstart",j,!1),c.domElement.removeEventListener("touchend",W,!1),c.domElement.removeEventListener("touchmove",V,!1),document.removeEventListener("mousemove",z,!1),document.removeEventListener("mouseup",G,!1),window.removeEventListener("keydown",k,!1)};var c=this,u={type:"change"},l={type:"start"},h={type:"end"},f={NONE:-1,ROTATE:0,DOLLY:1,PAN:2,TOUCH_ROTATE:3,TOUCH_DOLLY:4,TOUCH_PAN:5},d=f.NONE,p=1e-6,m=new r.Spherical,g=new r.Spherical,v=1,y=new r.Vector3,x=!1,_=new r.Vector2,b=new r.Vector2,w=new r.Vector2,M=new r.Vector2,E=new r.Vector2,T=new r.Vector2,S=new r.Vector2,A=new r.Vector2,R=new r.Vector2;function L(){return Math.pow(.95,c.zoomSpeed)}function P(t){g.theta-=t}function C(t){g.phi-=t}var I,O=(I=new r.Vector3,function(t,e){I.setFromMatrixColumn(e,0),I.multiplyScalar(-t),y.add(I)}),U=function(){var t=new r.Vector3;return function(e,n){t.setFromMatrixColumn(n,1),t.multiplyScalar(e),y.add(t)}}(),N=function(){var t=new r.Vector3;return function(e,n){var i=c.domElement===document?c.domElement.body:c.domElement;if(c.object instanceof r.PerspectiveCamera){var o=c.object.position;t.copy(o).sub(c.target);var a=t.length();a*=Math.tan(c.object.fov/2*Math.PI/180),O(2*e*a/i.clientHeight,c.object.matrix),U(2*n*a/i.clientHeight,c.object.matrix)}else c.object instanceof r.OrthographicCamera?(O(e*(c.object.right-c.object.left)/c.object.zoom/i.clientWidth,c.object.matrix),U(n*(c.object.top-c.object.bottom)/c.object.zoom/i.clientHeight,c.object.matrix)):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - pan disabled."),c.enablePan=!1)}}();function D(t){c.object instanceof r.PerspectiveCamera?v/=t:c.object instanceof r.OrthographicCamera?(c.object.zoom=Math.max(c.minZoom,Math.min(c.maxZoom,c.object.zoom*t)),c.object.updateProjectionMatrix(),x=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),c.enableZoom=!1)}function F(t){c.object instanceof r.PerspectiveCamera?v*=t:c.object instanceof r.OrthographicCamera?(c.object.zoom=Math.max(c.minZoom,Math.min(c.maxZoom,c.object.zoom/t)),c.object.updateProjectionMatrix(),x=!0):(console.warn("WARNING: OrbitControls.js encountered an unknown camera type - dolly/zoom disabled."),c.enableZoom=!1)}function B(t){if(!1!==c.enabled){switch(t.preventDefault(),t.button){case c.mouseButtons.ORBIT:if(!1===c.enableRotate)return;!function(t){_.set(t.clientX,t.clientY)}(t),d=f.ROTATE;break;case c.mouseButtons.ZOOM:if(!1===c.enableZoom)return;!function(t){S.set(t.clientX,t.clientY)}(t),d=f.DOLLY;break;case c.mouseButtons.PAN:if(!1===c.enablePan)return;!function(t){M.set(t.clientX,t.clientY)}(t),d=f.PAN}d!==f.NONE&&(document.addEventListener("mousemove",z,!1),document.addEventListener("mouseup",G,!1),c.dispatchEvent(l))}}function z(t){if(!1!==c.enabled)switch(t.preventDefault(),d){case f.ROTATE:if(!1===c.enableRotate)return;!function(t){b.set(t.clientX,t.clientY),w.subVectors(b,_);var e=c.domElement===document?c.domElement.body:c.domElement;P(2*Math.PI*w.x/e.clientWidth*c.rotateSpeed),C(2*Math.PI*w.y/e.clientHeight*c.rotateSpeed),_.copy(b),c.update()}(t);break;case f.DOLLY:if(!1===c.enableZoom)return;!function(t){A.set(t.clientX,t.clientY),R.subVectors(A,S),R.y>0?D(L()):R.y<0&&F(L()),S.copy(A),c.update()}(t);break;case f.PAN:if(!1===c.enablePan)return;!function(t){E.set(t.clientX,t.clientY),T.subVectors(E,M),N(T.x,T.y),M.copy(E),c.update()}(t)}}function G(t){!1!==c.enabled&&(document.removeEventListener("mousemove",z,!1),document.removeEventListener("mouseup",G,!1),c.dispatchEvent(h),d=f.NONE)}function H(t){!1===c.enabled||!1===c.enableZoom||d!==f.NONE&&d!==f.ROTATE||(t.preventDefault(),t.stopPropagation(),function(t){t.deltaY<0?F(L()):t.deltaY>0&&D(L()),c.update()}(t),c.dispatchEvent(l),c.dispatchEvent(h))}function k(t){!1!==c.enabled&&!1!==c.enableKeys&&!1!==c.enablePan&&function(t){switch(t.keyCode){case c.keys.UP:N(0,c.keyPanSpeed),c.update();break;case c.keys.BOTTOM:N(0,-c.keyPanSpeed),c.update();break;case c.keys.LEFT:N(c.keyPanSpeed,0),c.update();break;case c.keys.RIGHT:N(-c.keyPanSpeed,0),c.update()}}(t)}function j(t){if(!1!==c.enabled){switch(t.touches.length){case 1:if(!1===c.enableRotate)return;!function(t){_.set(t.touches[0].pageX,t.touches[0].pageY)}(t),d=f.TOUCH_ROTATE;break;case 2:if(!1===c.enableZoom)return;!function(t){var e=t.touches[0].pageX-t.touches[1].pageX,n=t.touches[0].pageY-t.touches[1].pageY,r=Math.sqrt(e*e+n*n);S.set(0,r)}(t),d=f.TOUCH_DOLLY;break;case 3:if(!1===c.enablePan)return;!function(t){M.set(t.touches[0].pageX,t.touches[0].pageY)}(t),d=f.TOUCH_PAN;break;default:d=f.NONE}d!==f.NONE&&c.dispatchEvent(l)}}function V(t){if(!1!==c.enabled)switch(t.preventDefault(),t.stopPropagation(),t.touches.length){case 1:if(!1===c.enableRotate)return;if(d!==f.TOUCH_ROTATE)return;!function(t){b.set(t.touches[0].pageX,t.touches[0].pageY),w.subVectors(b,_);var e=c.domElement===document?c.domElement.body:c.domElement;P(2*Math.PI*w.x/e.clientWidth*c.rotateSpeed),C(2*Math.PI*w.y/e.clientHeight*c.rotateSpeed),_.copy(b),c.update()}(t);break;case 2:if(!1===c.enableZoom)return;if(d!==f.TOUCH_DOLLY)return;!function(t){var e=t.touches[0].pageX-t.touches[1].pageX,n=t.touches[0].pageY-t.touches[1].pageY,r=Math.sqrt(e*e+n*n);A.set(0,r),R.subVectors(A,S),R.y>0?F(L()):R.y<0&&D(L()),S.copy(A),c.update()}(t);break;case 3:if(!1===c.enablePan)return;if(d!==f.TOUCH_PAN)return;!function(t){E.set(t.touches[0].pageX,t.touches[0].pageY),T.subVectors(E,M),N(T.x,T.y),M.copy(E),c.update()}(t);break;default:d=f.NONE}}function W(t){!1!==c.enabled&&(c.dispatchEvent(h),d=f.NONE)}function X(t){!1!==c.enabled&&t.preventDefault()}c.domElement.addEventListener("contextmenu",X,!1),c.domElement.addEventListener("mousedown",B,!1),c.domElement.addEventListener("wheel",H,!1),c.domElement.addEventListener("touchstart",j,!1),c.domElement.addEventListener("touchend",W,!1),c.domElement.addEventListener("touchmove",V,!1),window.addEventListener("keydown",k,!1),this.update()},r.OrbitControls.prototype=Object.create(r.EventDispatcher.prototype),r.OrbitControls.prototype.constructor=r.OrbitControls,Object.defineProperties(r.OrbitControls.prototype,{center:{get:function(){return console.warn("THREE.OrbitControls: .center has been renamed to .target"),this.target}},noZoom:{get:function(){return console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),!this.enableZoom},set:function(t){console.warn("THREE.OrbitControls: .noZoom has been deprecated. Use .enableZoom instead."),this.enableZoom=!t}},noRotate:{get:function(){return console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),!this.enableRotate},set:function(t){console.warn("THREE.OrbitControls: .noRotate has been deprecated. Use .enableRotate instead."),this.enableRotate=!t}},noPan:{get:function(){return console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),!this.enablePan},set:function(t){console.warn("THREE.OrbitControls: .noPan has been deprecated. Use .enablePan instead."),this.enablePan=!t}},noKeys:{get:function(){return console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),!this.enableKeys},set:function(t){console.warn("THREE.OrbitControls: .noKeys has been deprecated. Use .enableKeys instead."),this.enableKeys=!t}},staticMoving:{get:function(){return console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),!this.enableDamping},set:function(t){console.warn("THREE.OrbitControls: .staticMoving has been deprecated. Use .enableDamping instead."),this.enableDamping=!t}},dynamicDampingFactor:{get:function(){return console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor},set:function(t){console.warn("THREE.OrbitControls: .dynamicDampingFactor has been renamed. Use .dampingFactor instead."),this.dampingFactor=t}}})}]); \ No newline at end of file diff --git a/public/coins/algeria/596.json b/public/coins/algeria/596.json index 3232911..deb32d3 100644 --- a/public/coins/algeria/596.json +++ b/public/coins/algeria/596.json @@ -48,7 +48,7 @@ } ], "lettering_translation": "Bank of Algeria\r\n20\r\nDinars", - "picture": "https://en.numista.com/catalogue/photos/algerie/466-original.jpg", + "picture": "/photos/algerie/466-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/algerie/466-180.jpg", "picture_copyright": "Ulmo" }, @@ -60,14 +60,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/algerie/465-original.jpg", + "picture": "/photos/algerie/465-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/algerie/465-180.jpg", "picture_copyright": "Ulmo" }, "comments": "The Barbary Lion or Atlas Lion (Panthera leo) found in Algeria is considered now a sub-species.
\r\nIts tri-Nominal name or Sub-species name is Panthera leo barbaricus
\r\n
\r\n1413 (1992) Proof Set:
\r\n\"\" \"\"
\r\n\"\" \"\"
\r\n\"\"
\r\n© gdch6ng
\r\n
\r\n1417 (1997) Mint Set
\r\n\"\"\"\"\"\"\"\"\"\"
\r\n
\r\n1421 (2000) Mint Set:
\r\n\"\" \"\" \"\"
\r\n\"\" \"\"
\r\n© gregg", - "tags": [ - "Cat or feline" - ], + "tags": ["Cat or feline"], "references": [ { "catalogue": { @@ -96,5 +94,6 @@ "id": "5345", "name": "Algiers" } - ] + ], + "color": "rgb(196,172,76)" } diff --git a/public/coins/argentina/2217.json b/public/coins/argentina/2217.json index 7fe2e8c..986245c 100644 --- a/public/coins/argentina/2217.json +++ b/public/coins/argentina/2217.json @@ -47,7 +47,7 @@ ], "unabridged_legend": "8 escudos", "lettering_translation": "Argentinian Republic\r\nIn Unity and Liberty·PTS·J·8S\r\n·1813·\r\n·First Coin of the Motherland·", - "picture": "https://en.numista.com/catalogue/photos/argentine/1495-original.jpg", + "picture": "/photos/argentine/1495-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1495-180.jpg", "picture_copyright": "Essor Prof" }, @@ -60,7 +60,7 @@ } ], "lettering_translation": "One Peso\r\nProvinces of the Rio de la Plata\r\n2006", - "picture": "https://en.numista.com/catalogue/photos/argentine/1496-original.jpg", + "picture": "/photos/argentine/1496-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1496-180.jpg", "picture_copyright": "Essor Prof" }, @@ -89,9 +89,7 @@ "maxYear": 2013 } ], - "tags": [ - "Coin depiction" - ], + "tags": ["Coin depiction"], "references": [ { "catalogue": { @@ -121,7 +119,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/argentine/1203-original.jpg", + "picture": "/photos/argentine/1203-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1203-180.jpg", "picture_copyright": "Cyrillius" }, @@ -150,5 +148,6 @@ "id": "22", "name": "Istituto Poligrafico e Zecca dello Stato" } - ] + ], + "color": "rgb(176,140,84)" } diff --git a/public/coins/argentina/27528.json b/public/coins/argentina/27528.json index c3f8240..df3170f 100644 --- a/public/coins/argentina/27528.json +++ b/public/coins/argentina/27528.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Argentina\r\nIn unity and liberty", - "picture": "https://en.numista.com/catalogue/photos/argentine/1072-original.jpg", + "picture": "/photos/argentine/1072-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1072-180.jpg", "picture_copyright": "nalaberong" }, @@ -58,14 +58,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/argentine/1073-original.jpg", + "picture": "/photos/argentine/1073-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1073-180.jpg", "picture_copyright": "nalaberong" }, "comments": "\"\"
\r\nLogo of the Argentina Bicentennial (designed by Cristina Fernández)
\r\n
\r\nDifference between "normal eyes" and "bulging eyes" for the 2 pesos 2010:
\r\n\"\"", - "tags": [ - "Revolution or civil war" - ], + "tags": ["Revolution or civil war"], "references": [ { "catalogue": { @@ -95,7 +93,7 @@ "orientation": "medal", "edge": { "description": "Segmented reeding", - "picture": "https://en.numista.com/catalogue/photos/argentine/834-original.jpg", + "picture": "/photos/argentine/834-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/834-180.jpg", "picture_copyright": "Phil59" }, @@ -104,5 +102,6 @@ "id": "1336", "name": "Buenos Aires" } - ] + ], + "color": "rgb(188,153,112)" } diff --git a/public/coins/argentina/3256.json b/public/coins/argentina/3256.json index b68aa6b..a19868b 100644 --- a/public/coins/argentina/3256.json +++ b/public/coins/argentina/3256.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Argentina · In Union and Liberty", - "picture": "https://en.numista.com/catalogue/photos/argentine/1180-original.jpg", + "picture": "/photos/argentine/1180-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1180-180.jpg", "picture_copyright": "Ulmo" }, @@ -57,7 +57,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/argentine/1181-original.jpg", + "picture": "/photos/argentine/1181-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1181-180.jpg", "picture_copyright": "Ulmo" }, @@ -75,9 +75,7 @@ "maxYear": 1996 } ], - "tags": [ - "Castle or fortification" - ], + "tags": ["Castle or fortification"], "references": [ { "catalogue": { @@ -107,7 +105,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/argentine/5f0a0fa91c9105.96404192-original.jpg", + "picture": "/photos/argentine/5f0a0fa91c9105.96404192-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/5f0a0fa91c9105.96404192-180.jpg", "picture_copyright": "Renato Lima" }, @@ -128,5 +126,6 @@ "id": "1300", "name": "South African Mint" } - ] + ], + "color": "rgb(192,164,100)" } diff --git a/public/coins/argentina/89870.json b/public/coins/argentina/89870.json index c4a6ef6..df28799 100644 --- a/public/coins/argentina/89870.json +++ b/public/coins/argentina/89870.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "ARGENTINA REPUBLIC\r\n1816 ° INDEPENDENCE ° 2016", - "picture": "https://en.numista.com/catalogue/photos/argentine/1259-original.jpg", + "picture": "/photos/argentine/1259-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1259-180.jpg", "picture_copyright": "Cyrillius" }, @@ -59,16 +59,13 @@ } ], "lettering_translation": "IN UNION AND FREEDOM\r\n2 PESOS\r\n2016", - "picture": "https://en.numista.com/catalogue/photos/argentine/1260-original.jpg", + "picture": "/photos/argentine/1260-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1260-180.jpg", "picture_copyright": "Cyrillius" }, "commemorated_topic": "Bicentennial of the Declaration of Independence Argentina", "comments": "\"\"", - "tags": [ - "Independence", - "Phrygian cap" - ], + "tags": ["Independence", "Phrygian cap"], "references": [ { "catalogue": { @@ -84,7 +81,7 @@ "orientation": "medal", "edge": { "description": "Segmented reeding", - "picture": "https://en.numista.com/catalogue/photos/argentine/1261-original.jpg", + "picture": "/photos/argentine/1261-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/argentine/1261-180.jpg", "picture_copyright": "Cyrillius" }, @@ -93,5 +90,6 @@ "id": "1336", "name": "Buenos Aires" } - ] + ], + "color": "rgb(220,164,60)" } diff --git a/public/coins/australia/1702.json b/public/coins/australia/1702.json index 7461a74..98596de 100644 --- a/public/coins/australia/1702.json +++ b/public/coins/australia/1702.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Ian Rank-Broadley" - ], + "designers": ["Ian Rank-Broadley"], "description": "4th portrait of Queen Elizabeth II facing right wearing the Girls of Great Britain and Ireland Tiara", "lettering": "ELIZABETH II \r\nAUSTRALIA 2007\r\nIRB", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/australie/62a210db06a899.82205180-original.jpg", + "picture": "/photos/australie/62a210db06a899.82205180-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/australie/62a210db06a899.82205180-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "designers": [ - "Stuart Devlin" - ], + "designers": ["Stuart Devlin"], "description": "Platypus (Ornithorhynchus anatinus) and the numeral \"20\"", "lettering": "20\r\nSD", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/australie/62a210dc350a20.47448877-original.jpg", + "picture": "/photos/australie/62a210dc350a20.47448877-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/australie/62a210dc350a20.47448877-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -154,7 +150,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/australie/9337-original.jpg", + "picture": "/photos/australie/9337-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/australie/9337-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -165,5 +161,6 @@ "id": "28", "name": "Royal Australian Mint" } - ] + ], + "color": "rgb(141.0638297872341,127.5,113.9361702127659)" } diff --git a/public/coins/australia/1703.json b/public/coins/australia/1703.json index a82f967..4df1f2e 100644 --- a/public/coins/australia/1703.json +++ b/public/coins/australia/1703.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Raphael David Maklouf" - ], + "designers": ["Raphael David Maklouf"], "description": "3rd portrait of Queen Elizabeth II facing right wearing the King George IV State Diadem", "lettering": "ELIZABETH II \r\nAUSTRALIA 1989\r\nRDM", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/australie/62a2133d8489b5.93573580-original.jpg", + "picture": "/photos/australie/62a2133d8489b5.93573580-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/australie/62a2133d8489b5.93573580-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "designers": [ - "Stuart Devlin" - ], + "designers": ["Stuart Devlin"], "description": "Platypus (Ornithorhynchus anatinus) and the numeral \"20\"", "lettering": "20\r\nSD", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/australie/62a2133ed01437.43713544-original.jpg", + "picture": "/photos/australie/62a2133ed01437.43713544-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/australie/62a2133ed01437.43713544-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -110,9 +106,7 @@ "maxYear": 2023 } ], - "tags": [ - "Other animal" - ], + "tags": ["Other animal"], "references": [ { "catalogue": { @@ -135,7 +129,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/australie/8348-original.jpg", + "picture": "/photos/australie/8348-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/australie/8348-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -146,5 +140,6 @@ "id": "28", "name": "Royal Australian Mint" } - ] + ], + "color": "rgb(142.7064220183486,131.00917431192659,112.29357798165138)" } diff --git a/public/coins/austria/57.json b/public/coins/austria/57.json index 55e2ee0..f2ae71c 100644 --- a/public/coins/austria/57.json +++ b/public/coins/austria/57.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Josef Kaiser" - ], + "engravers": ["Josef Kaiser"], "description": "A gentian, which symbolizes a duty to the environment encircled by the face value, heraldic hatchings representing the Austrian flag and twelve five-pointed stars representing the European Union around the rim", "lettering": "EIN EURO CENT 2007", "lettering_scripts": [ @@ -47,16 +45,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/autriche/62ca843026f837.34117868-original.jpg", + "picture": "/photos/autriche/62ca843026f837.34117868-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/autriche/62ca843026f837.34117868-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -64,18 +60,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/autriche/62ca843116f7d5.49400449-original.jpg", + "picture": "/photos/autriche/62ca843116f7d5.49400449-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/autriche/62ca843116f7d5.49400449-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "Gentian Flower or Stemless Gentian Flower  - Binomial Name: Gentiana acaulis
\r\n
\r\n\"\"
\r\n
\r\nThere are small differences in the oblique lines on the reverse in 2018:
\r\n\"\"
\r\n
\r\nSlightly modified obverse (thinner, longer and more numerous lines in the red fields of the Austrian flag):
\r\n\"\"", - "tags": [ - "Map", - "Globe", - "Flower" - ], + "tags": ["Map", "Globe", "Flower"], "references": [ { "catalogue": { @@ -98,7 +90,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/autriche/3024-original.jpg", + "picture": "/photos/autriche/3024-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/autriche/3024-180.jpg", "picture_copyright": "Cyrillius" }, @@ -108,5 +100,6 @@ "name": "Münze Österreich" } ], - "count": 4 + "count": 4, + "color": "rgb(167,113,74)" } diff --git a/public/coins/bahamas/15296.json b/public/coins/bahamas/15296.json index 8bd7c8d..883fc99 100644 --- a/public/coins/bahamas/15296.json +++ b/public/coins/bahamas/15296.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Arnold Machin" - ], + "engravers": ["Arnold Machin"], "description": "The arms of the Bahamas with the country name above and the date below", "lettering": "COMMONWEALTH OF THE BAHAMAS\r\nFORWARD, UPWARD, ONWARD TOGETHER\r\n2005", "lettering_scripts": [ @@ -51,14 +49,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/688-original.jpg", + "picture": "/photos/bahamas/688-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/688-180.jpg", "picture_copyright": "fryant" }, "reverse": { - "engravers": [ - "Arnold Machin" - ], + "engravers": ["Arnold Machin"], "description": "Bahamian sailboat, value above", "lettering": "TWENTYFIVE CENTS", "lettering_scripts": [ @@ -66,7 +62,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/689-original.jpg", + "picture": "/photos/bahamas/689-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/689-180.jpg", "picture_copyright": "fryant" }, @@ -116,10 +112,7 @@ "maxYear": 2015 } ], - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -148,5 +141,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(200.35714285714297,145.7142857142854,54.64285714285703)" } diff --git a/public/coins/bahamas/5010.json b/public/coins/bahamas/5010.json index 6c21f02..62d2858 100644 --- a/public/coins/bahamas/5010.json +++ b/public/coins/bahamas/5010.json @@ -48,7 +48,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/357-original.jpg", + "picture": "/photos/bahamas/357-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/357-180.jpg", "picture_copyright": "Ulmo" }, @@ -60,14 +60,11 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/358-original.jpg", + "picture": "/photos/bahamas/358-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/358-180.jpg", "picture_copyright": "Ulmo" }, - "tags": [ - "Coat of Arms", - "Fruit" - ], + "tags": ["Coat of Arms", "Fruit"], "references": [ { "catalogue": { @@ -100,5 +97,6 @@ "id": "1319", "name": "The Franklin Mint" } - ] + ], + "color": "rgb(184.53947368421052,167.76315789473682,70.46052631578947)" } diff --git a/public/coins/bahamas/5012.json b/public/coins/bahamas/5012.json index 682d023..db44a3f 100644 --- a/public/coins/bahamas/5012.json +++ b/public/coins/bahamas/5012.json @@ -48,16 +48,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/261-original.jpg", + "picture": "/photos/bahamas/261-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/261-180.jpg", "picture_copyright": "moi4992", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "designers": [ - "Arnold Machin" - ], + "designers": ["Arnold Machin"], "description": "Hibiscus (Hibiscus rosa-sinensis) and the denomination divided below", "lettering": "· · · FIFTEEN · CENTS · · ·", "lettering_scripts": [ @@ -65,18 +63,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/262-original.jpg", + "picture": "/photos/bahamas/262-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/262-180.jpg", "picture_copyright": "moi4992", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, - "tags": [ - "Bird", - "Fish", - "Coat of Arms", - "Flower" - ], + "tags": ["Bird", "Fish", "Coat of Arms", "Flower"], "references": [ { "catalogue": { @@ -109,5 +102,6 @@ "id": "1319", "name": "The Franklin Mint" } - ] + ], + "color": "rgb(70.34482758620689,153.8793103448276,184.6551724137931)" } diff --git a/public/coins/bahamas/9224.json b/public/coins/bahamas/9224.json index cd95612..db2cea6 100644 --- a/public/coins/bahamas/9224.json +++ b/public/coins/bahamas/9224.json @@ -49,14 +49,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/359-original.jpg", + "picture": "/photos/bahamas/359-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/359-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "designers": [ - "Arnold Machin" - ], + "designers": ["Arnold Machin"], "description": "Two Bonefish (Albula vulpes) above the denomination", "lettering": "FM\r\nTEN CENTS", "lettering_scripts": [ @@ -64,15 +62,11 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/360-original.jpg", + "picture": "/photos/bahamas/360-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/360-180.jpg", "picture_copyright": "Ulmo" }, - "tags": [ - "Bird", - "Fish", - "Coat of Arms" - ], + "tags": ["Bird", "Fish", "Coat of Arms"], "references": [ { "catalogue": { @@ -95,7 +89,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/bahamas/627d8a8a060cb7.98306122-original.jpg", + "picture": "/photos/bahamas/627d8a8a060cb7.98306122-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/627d8a8a060cb7.98306122-180.jpg", "picture_copyright": "Harryg", "picture_license_name": "CC BY", @@ -110,5 +104,6 @@ "id": "1319", "name": "The Franklin Mint" } - ] + ], + "color": "rgb(157,143,72)" } diff --git a/public/coins/bahamas/941.json b/public/coins/bahamas/941.json index 65bf555..42b3012 100644 --- a/public/coins/bahamas/941.json +++ b/public/coins/bahamas/941.json @@ -50,7 +50,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/692-original.jpg", + "picture": "/photos/bahamas/692-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/692-180.jpg", "picture_copyright": "HOOK" }, @@ -62,7 +62,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bahamas/693-original.jpg", + "picture": "/photos/bahamas/693-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bahamas/693-180.jpg", "picture_copyright": "HOOK" }, @@ -79,10 +79,7 @@ "maxYear": 1985 } ], - "tags": [ - "Marine invertebrate", - "Coat of Arms" - ], + "tags": ["Marine invertebrate", "Coat of Arms"], "references": [ { "catalogue": { @@ -111,5 +108,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(188,108,76)" } diff --git a/public/coins/belgium/56030.json b/public/coins/belgium/56030.json index 57f3564..ef908de 100644 --- a/public/coins/belgium/56030.json +++ b/public/coins/belgium/56030.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "Right profile portrait of King Phillipe is encircled by the twelve stars of Europe. Between the head and the band of stars is his Crowned monogram: Crown above capital \"FP\". The mint marks appear on either side of the year of issuance.", "lettering": "FP\r\nBE \r\n2014", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61f94d99ab5967.97108825-original.jpg", + "picture": "/photos/belgique/61f94d99ab5967.97108825-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61f94d99ab5967.97108825-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "EURO\r\nCENT\r\n1 LL", "lettering_scripts": [ @@ -68,18 +64,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61f94d9a944ae6.03694853-original.jpg", + "picture": "/photos/belgique/61f94d9a944ae6.03694853-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61f94d9a944ae6.03694853-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "(fr) Initiale FP de l'avers :
\r\n    "F" = Filip en néerlandais
\r\n    "P" = Philippe en français
\r\n
\r\nDifférents d'atelier :
\r\n    Tête de l'archange  St. Michel surmontée d'une croix - Monnaie royale de Belgique à Bruxelles (2014-2017)
\r\n    Caducée - Monnaie royale des Pays-Bas à Utrecht (2018-2020)
\r\n    Caducée - Monnaie royale des Pays-Bas à Houten (2020-présent)
\r\n
\r\nDifférents de graveur :
\r\n    Chat - Bernard Gillard (2014-2016)
\r\n    Blason - Ingrid van Herzele (2017-Présent)
\r\n    Aster et fiole - Giovanni Van de Velde (2023 - à présent)", - "tags": [ - "Map", - "Monarch", - "Monogram" - ], + "tags": ["Map", "Monarch", "Monogram"], "references": [ { "catalogue": { @@ -102,7 +94,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/belgique/2712-original.jpg", + "picture": "/photos/belgique/2712-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/2712-180.jpg", "picture_copyright": "Cyrillius" }, @@ -116,5 +108,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 1 + "count": 1, + "color": "rgb(193,119,51)" } diff --git a/public/coins/belgium/56035.json b/public/coins/belgium/56035.json index a74af79..d9ffcff 100644 --- a/public/coins/belgium/56035.json +++ b/public/coins/belgium/56035.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "Bust of King Philippe facing right, date below, crowned monogram at left", "lettering": "FP\r\nBE\r\n2015", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/605d6f24575a33.43979441-original.jpg", + "picture": "/photos/belgique/605d6f24575a33.43979441-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/605d6f24575a33.43979441-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "Relief map of Western Europe, stars and value", "lettering": "50\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -68,18 +64,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/605d6f24db4298.62700064-original.jpg", + "picture": "/photos/belgique/605d6f24db4298.62700064-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/605d6f24db4298.62700064-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "Mint Marks:
\r\n
  • Head of archangel St. Michael - Brussels Mint (2014-2017)
    \r\n
  • Mercury's wand - Royal Dutch Mint (2018-Present)
    \r\n
Privy marks:
  • Cat, Mint Master Bernard Gillard, 2013-2016
    \r\n
  • Coat of arms, Ingrid van Herzele, 2017-
    \r\n
", - "tags": [ - "Map", - "Monarch", - "Monogram" - ], + "tags": ["Map", "Monarch", "Monogram"], "references": [ { "catalogue": { @@ -109,7 +101,7 @@ "orientation": "medal", "edge": { "description": "Indented (50 indentations)", - "picture": "https://en.numista.com/catalogue/photos/belgique/2697-original.jpg", + "picture": "/photos/belgique/2697-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/2697-180.jpg", "picture_copyright": "Cyrillius" }, @@ -123,5 +115,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 1 + "count": 1, + "color": "rgb(156,132,60)" } diff --git a/public/coins/belgium/6298.json b/public/coins/belgium/6298.json index 33e738b..3e800be 100644 --- a/public/coins/belgium/6298.json +++ b/public/coins/belgium/6298.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jan Alfons Keustermans" - ], + "engravers": ["Jan Alfons Keustermans"], "description": "Left profile portrait of King Albert II is encircled by the twelve stars of Europe. Between the head and the band of stars is his Crowned monogram: Crown above capital \"A\" with the Roman numeral \"II\".", "lettering": "A II 2012 BE", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61f93b01ae94c2.42272366-original.jpg", + "picture": "/photos/belgique/61f93b01ae94c2.42272366-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61f93b01ae94c2.42272366-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61f93b029062a5.76364516-original.jpg", + "picture": "/photos/belgique/61f93b029062a5.76364516-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61f93b029062a5.76364516-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -87,10 +83,7 @@ "maxYear": 2007 } ], - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -120,7 +113,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/belgique/2711-original.jpg", + "picture": "/photos/belgique/2711-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/2711-180.jpg", "picture_copyright": "Cyrillius" }, @@ -130,5 +123,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 5 + "count": 5, + "color": "rgb(175,116,83)" } diff --git a/public/coins/belgium/73.json b/public/coins/belgium/73.json index 00d8cc5..42c5c93 100644 --- a/public/coins/belgium/73.json +++ b/public/coins/belgium/73.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jan Alfons Keustermans" - ], + "engravers": ["Jan Alfons Keustermans"], "description": "The portrait in left profile of King Albert II is encircled by the twelve stars of Europe, among which is situated his monogram: a capital \"A\" with the Roman numeral \"II\" underneath a crown.", "lettering": "A II 2005", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61f90964c1b165.14171227-original.jpg", + "picture": "/photos/belgique/61f90964c1b165.14171227-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61f90964c1b165.14171227-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61f9096597aca4.76643749-original.jpg", + "picture": "/photos/belgique/61f9096597aca4.76643749-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61f9096597aca4.76643749-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -88,10 +84,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -121,7 +114,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/belgique/2710-original.jpg", + "picture": "/photos/belgique/2710-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/2710-180.jpg", "picture_copyright": "Cyrillius" }, @@ -131,5 +124,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 3 + "count": 3, + "color": "rgb(172,92,52)" } diff --git a/public/coins/belgium/74.json b/public/coins/belgium/74.json index 4eab25c..a1d78f7 100644 --- a/public/coins/belgium/74.json +++ b/public/coins/belgium/74.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jan Alfons Keustermans" - ], + "engravers": ["Jan Alfons Keustermans"], "description": "The portrait in left profile of King Albert II is encircled by the twelve stars of Europe, among which is situated his monogram: a capital \"A\" with the Roman numeral \"II\" underneath a crown", "lettering": "A II 2005", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61fde21a83e7b0.77023192-original.jpg", + "picture": "/photos/belgique/61fde21a83e7b0.77023192-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61fde21a83e7b0.77023192-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/61fde21b82e9f5.76970017-original.jpg", + "picture": "/photos/belgique/61fde21b82e9f5.76970017-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/61fde21b82e9f5.76970017-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -117,7 +113,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/belgique/2706-original.jpg", + "picture": "/photos/belgique/2706-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/2706-180.jpg", "picture_copyright": "Cyrillius" }, @@ -127,5 +123,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 2 + "count": 2, + "color": "rgb(172,92,52)" } diff --git a/public/coins/belgium/75.json b/public/coins/belgium/75.json index 5c67b13..3c4db23 100644 --- a/public/coins/belgium/75.json +++ b/public/coins/belgium/75.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jan Alfons Keustermans" - ], + "engravers": ["Jan Alfons Keustermans"], "description": "The portrait in left profile of King Albert II encircled by the twelve stars of Europe, among which is situated his monogram: a capital \"A\" with the Roman numeral \"II\" underneath a crown", "lettering": "A II 2004", "lettering_scripts": [ @@ -51,14 +49,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/3429-original.jpg", + "picture": "/photos/belgique/3429-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/3429-180.jpg", "picture_copyright": "Joseph Kunnappally" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -66,7 +62,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/3430-original.jpg", + "picture": "/photos/belgique/3430-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/3430-180.jpg", "picture_copyright": "Joseph Kunnappally" }, @@ -113,7 +109,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/belgique/3062-original.jpg", + "picture": "/photos/belgique/3062-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/3062-180.jpg", "picture_copyright": "Cyrillius" }, @@ -123,5 +119,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 1 + "count": 1, + "color": "rgb(192,158,78)" } diff --git a/public/coins/belgium/79.json b/public/coins/belgium/79.json index 01e62ab..7f45e07 100644 --- a/public/coins/belgium/79.json +++ b/public/coins/belgium/79.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jan Alfons Keustermans" - ], + "engravers": ["Jan Alfons Keustermans"], "description": "The portrait in left profile of King Albert II is encircled by the twelve stars of Europe, among which is situated his monogram: a capital \"A\" with the Roman numeral \"II\" underneath a crown", "lettering": "A II \r\n2004", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/3168-original.jpg", + "picture": "/photos/belgique/3168-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/3168-180.jpg", "picture_copyright": "moi4992", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20 \r\nLL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/belgique/3169-original.jpg", + "picture": "/photos/belgique/3169-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/3169-180.jpg", "picture_copyright": "moi4992", "picture_license_name": "CC BY-NC-SA", @@ -99,11 +95,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map", - "Monarch", - "Monogram" - ], + "tags": ["Map", "Monarch", "Monogram"], "references": [ { "catalogue": { @@ -133,7 +125,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/belgique/3064-original.jpg", + "picture": "/photos/belgique/3064-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/belgique/3064-180.jpg", "picture_copyright": "Cyrillius" }, @@ -143,5 +135,6 @@ "name": "Royal Mint of Belgium" } ], - "count": 1 + "count": 1, + "color": "rgb(172,156,60)" } diff --git a/public/coins/bolivia/13820.json b/public/coins/bolivia/13820.json index 6a0333f..ebb8c34 100644 --- a/public/coins/bolivia/13820.json +++ b/public/coins/bolivia/13820.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/1096-original.jpg", + "picture": "/photos/bolivie/1096-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/1096-180.jpg", "picture_copyright": "gef" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Unity is strength", - "picture": "https://en.numista.com/catalogue/photos/bolivie/1097-original.jpg", + "picture": "/photos/bolivie/1097-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/1097-180.jpg", "picture_copyright": "gef" }, @@ -175,9 +175,7 @@ "maxYear": 2004 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -214,5 +212,6 @@ "id": "2", "name": "Staatliche Münze Baden-Württemberg" } - ] + ], + "color": "rgb(104.08163265306119,130.10204081632654,150.9183673469388)" } diff --git a/public/coins/bolivia/18054.json b/public/coins/bolivia/18054.json index 2033dab..d9e6431 100644 --- a/public/coins/bolivia/18054.json +++ b/public/coins/bolivia/18054.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Plurinational State of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/61fbd8cdc521c7.95775717-original.jpg", + "picture": "/photos/bolivie/61fbd8cdc521c7.95775717-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/61fbd8cdc521c7.95775717-180.jpg", "picture_copyright": "Essor Prof" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Unity is strength\r\n2\r\nBolivianos \r\n2010", - "picture": "https://en.numista.com/catalogue/photos/bolivie/61fbd8ce4fe5d9.40981720-original.jpg", + "picture": "/photos/bolivie/61fbd8ce4fe5d9.40981720-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/61fbd8ce4fe5d9.40981720-180.jpg", "picture_copyright": "Essor Prof" }, @@ -120,9 +120,7 @@ "maxYear": 2012 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -145,5 +143,6 @@ "orientation": "coin", "edge": { "description": "Plain" - } + }, + "color": "rgb(133.3846153846154,121.61538461538461,121.61538461538461)" } diff --git a/public/coins/bolivia/3223.json b/public/coins/bolivia/3223.json index ca89fec..4abbb27 100644 --- a/public/coins/bolivia/3223.json +++ b/public/coins/bolivia/3223.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/62023dc19a2656.58434193-original.jpg", + "picture": "/photos/bolivie/62023dc19a2656.58434193-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/62023dc19a2656.58434193-180.jpg", "picture_copyright": "nordboutik59" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Unity is strength", - "picture": "https://en.numista.com/catalogue/photos/bolivie/62023dc2034434.51250636-original.jpg", + "picture": "/photos/bolivie/62023dc2034434.51250636-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/62023dc2034434.51250636-180.jpg", "picture_copyright": "nordboutik59" }, @@ -197,5 +197,6 @@ "orientation": "coin", "edge": { "description": "Smooth" - } + }, + "color": "rgb(123.33333333333331,131.66666666666669,123.33333333333331)" } diff --git a/public/coins/bolivia/3224.json b/public/coins/bolivia/3224.json index ec61f17..8e6f083 100644 --- a/public/coins/bolivia/3224.json +++ b/public/coins/bolivia/3224.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/62054d5c05a143.15871433-original.jpg", + "picture": "/photos/bolivie/62054d5c05a143.15871433-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/62054d5c05a143.15871433-180.jpg", "picture_copyright": "Essor Prof" }, @@ -58,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bolivie/62054d5c576849.05953848-original.jpg", + "picture": "/photos/bolivie/62054d5c576849.05953848-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/62054d5c576849.05953848-180.jpg", "picture_copyright": "Essor Prof" }, @@ -158,5 +158,6 @@ "id": "4157", "name": "VDM Metals / Vereinigte Deutsche Metallwerke" } - ] + ], + "color": "rgb(145.45774647887322,127.5,109.54225352112678)" } diff --git a/public/coins/bolivia/3225.json b/public/coins/bolivia/3225.json index df934ed..d35dd37 100644 --- a/public/coins/bolivia/3225.json +++ b/public/coins/bolivia/3225.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/61ffcb781e47e6.03131765-original.jpg", + "picture": "/photos/bolivie/61ffcb781e47e6.03131765-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/61ffcb781e47e6.03131765-180.jpg", "picture_copyright": "Essor Prof" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Unity is strength", - "picture": "https://en.numista.com/catalogue/photos/bolivie/61ffcb786c5df5.93434559-original.jpg", + "picture": "/photos/bolivie/61ffcb786c5df5.93434559-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/61ffcb786c5df5.93434559-180.jpg", "picture_copyright": "Essor Prof" }, @@ -211,5 +211,6 @@ "id": "4175", "name": "Vereinigte Deutsche Nickelwerke" } - ] + ], + "color": "rgb(132.68292682926833,122.31707317073166,126.46341463414632)" } diff --git a/public/coins/bolivia/3228.json b/public/coins/bolivia/3228.json index ee2d8b2..090d9d6 100644 --- a/public/coins/bolivia/3228.json +++ b/public/coins/bolivia/3228.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/307-original.jpg", + "picture": "/photos/bolivie/307-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/307-180.jpg", "picture_copyright": "seb" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Unity is strength", - "picture": "https://en.numista.com/catalogue/photos/bolivie/308-original.jpg", + "picture": "/photos/bolivie/308-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/308-180.jpg", "picture_copyright": "seb" }, @@ -211,5 +211,6 @@ "id": "4175", "name": "Vereinigte Deutsche Nickelwerke" } - ] + ], + "color": "rgb(126.60839160839161,119.47552447552445,135.52447552447555)" } diff --git a/public/coins/bolivia/4901.json b/public/coins/bolivia/4901.json index d5fabd4..58f07e2 100644 --- a/public/coins/bolivia/4901.json +++ b/public/coins/bolivia/4901.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/6214bb38c40759.70314599-original.jpg", + "picture": "/photos/bolivie/6214bb38c40759.70314599-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/6214bb38c40759.70314599-180.jpg", "picture_copyright": "Essor Prof" }, @@ -59,7 +59,7 @@ } ], "lettering_translation": "Fifty Cents\r\n50 c\r\n1942", - "picture": "https://en.numista.com/catalogue/photos/bolivie/6214bb3921f4e4.87659322-original.jpg", + "picture": "/photos/bolivie/6214bb3921f4e4.87659322-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/6214bb3921f4e4.87659322-180.jpg", "picture_copyright": "Essor Prof" }, @@ -88,11 +88,7 @@ "maxYear": 1942 } ], - "tags": [ - "Coat of Arms", - "Mountain", - "Caduceus" - ], + "tags": ["Coat of Arms", "Mountain", "Caduceus"], "references": [ { "catalogue": { @@ -121,5 +117,6 @@ "id": "11", "name": "United States Mint of Philadelphia" } - ] + ], + "color": "rgb(177,80,65)" } diff --git a/public/coins/bolivia/4902.json b/public/coins/bolivia/4902.json index df64b4b..4ae9a72 100644 --- a/public/coins/bolivia/4902.json +++ b/public/coins/bolivia/4902.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Bolivia", - "picture": "https://en.numista.com/catalogue/photos/bolivie/6214bce0dbdcd7.19257317-original.jpg", + "picture": "/photos/bolivie/6214bce0dbdcd7.19257317-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/6214bce0dbdcd7.19257317-180.jpg", "picture_copyright": "Essor Prof" }, @@ -59,13 +59,11 @@ } ], "lettering_translation": "Fifty Centavos", - "picture": "https://en.numista.com/catalogue/photos/bolivie/6214bce16e9ff7.82437752-original.jpg", + "picture": "/photos/bolivie/6214bce16e9ff7.82437752-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bolivie/6214bce16e9ff7.82437752-180.jpg", "picture_copyright": "Essor Prof" }, - "tags": [ - "Caduceus" - ], + "tags": ["Caduceus"], "references": [ { "catalogue": { @@ -94,5 +92,6 @@ "id": "292", "name": "Huguenin" } - ] + ], + "color": "rgb(145.7142857142857,125.4761904761905,109.28571428571429)" } diff --git a/public/coins/brazil/2252.json b/public/coins/brazil/2252.json index 1db66b8..9775d96 100644 --- a/public/coins/brazil/2252.json +++ b/public/coins/brazil/2252.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Brazil\r\nDeodoro\r\nRepublic\r\nNovember 15", - "picture": "https://en.numista.com/catalogue/photos/bresil/39-original.jpg", + "picture": "/photos/bresil/39-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/39-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -59,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bresil/40-original.jpg", + "picture": "/photos/bresil/40-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/40-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -156,9 +156,7 @@ "maxYear": 2023 } ], - "tags": [ - "Politician" - ], + "tags": ["Politician"], "references": [ { "catalogue": { @@ -187,5 +185,6 @@ "id": "1335", "name": "Casa da Moeda do Brasil" } - ] + ], + "color": "rgb(156,132,75)" } diff --git a/public/coins/brazil/2253.json b/public/coins/brazil/2253.json index 5df7914..ce711cb 100644 --- a/public/coins/brazil/2253.json +++ b/public/coins/brazil/2253.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Brazil", - "picture": "https://en.numista.com/catalogue/photos/bresil/6415b4c0a6da96.46073896-original.jpg", + "picture": "/photos/bresil/6415b4c0a6da96.46073896-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/6415b4c0a6da96.46073896-180.jpg", "picture_copyright": "Rogbert", "picture_license_name": "CC BY-NC", @@ -60,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bresil/6415b4c18b1fc0.64531988-original.jpg", + "picture": "/photos/bresil/6415b4c18b1fc0.64531988-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/6415b4c18b1fc0.64531988-180.jpg", "picture_copyright": "Rogbert", "picture_license_name": "CC BY-NC", @@ -157,10 +157,7 @@ "maxYear": 2023 } ], - "tags": [ - "Horse or equine", - "Politician" - ], + "tags": ["Horse or equine", "Politician"], "references": [ { "catalogue": { @@ -189,5 +186,6 @@ "id": "1335", "name": "Casa da Moeda do Brasil" } - ] + ], + "color": "rgb(132,100,60)" } diff --git a/public/coins/brazil/666.json b/public/coins/brazil/666.json index ecf09fa..59c38a2 100644 --- a/public/coins/brazil/666.json +++ b/public/coins/brazil/666.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Luciano Dias Araújo" - ], + "engravers": ["Luciano Dias Araújo"], "description": "Portrait of José Maria da Silva Paranhos Júnior (1845-1912), Baron of Rio Branco, Statesman, diplomat and historian, and the country name to the left", "lettering": "BRASIL\r\nRIO BRANCO", "lettering_scripts": [ @@ -48,7 +46,7 @@ } ], "lettering_translation": "Brazil", - "picture": "https://en.numista.com/catalogue/photos/bresil/1481-original.jpg", + "picture": "/photos/bresil/1481-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/1481-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -62,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bresil/1482-original.jpg", + "picture": "/photos/bresil/1482-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/1482-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -159,10 +157,7 @@ "maxYear": 2023 } ], - "tags": [ - "Politician", - "Map" - ], + "tags": ["Politician", "Map"], "references": [ { "catalogue": { @@ -199,7 +194,7 @@ } ], "lettering_translation": "Order and Progress Brazil", - "picture": "https://en.numista.com/catalogue/photos/bresil/1500-original.jpg", + "picture": "/photos/bresil/1500-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/1500-180.jpg", "picture_copyright": "ZacUK" }, @@ -212,5 +207,6 @@ "id": "23", "name": "Royal Dutch Mint" } - ] + ], + "color": "rgb(200.35714285714297,145.7142857142854,54.64285714285703)" } diff --git a/public/coins/brazil/8896.json b/public/coins/brazil/8896.json index cd27c77..e22ebce 100644 --- a/public/coins/brazil/8896.json +++ b/public/coins/brazil/8896.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "BRAZIL", - "picture": "https://en.numista.com/catalogue/photos/bresil/6415b67398cc93.94235770-original.jpg", + "picture": "/photos/bresil/6415b67398cc93.94235770-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/6415b67398cc93.94235770-180.jpg", "picture_copyright": "Rogbert", "picture_license_name": "CC BY-NC", @@ -59,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/bresil/6415b674c4fe24.52982882-original.jpg", + "picture": "/photos/bresil/6415b674c4fe24.52982882-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/6415b674c4fe24.52982882-180.jpg", "picture_copyright": "Rogbert", "picture_license_name": "CC BY-NC", @@ -156,9 +156,7 @@ "maxYear": 1999 } ], - "tags": [ - "Allegory" - ], + "tags": ["Allegory"], "references": [ { "catalogue": { @@ -181,7 +179,7 @@ "orientation": "coin", "edge": { "description": "Segmented reeding", - "picture": "https://en.numista.com/catalogue/photos/bresil/1540-original.jpg", + "picture": "/photos/bresil/1540-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bresil/1540-180.jpg", "picture_copyright": "nalaberong" }, @@ -190,5 +188,6 @@ "id": "1335", "name": "Casa da Moeda do Brasil" } - ] + ], + "color": "rgb(140,100,60)" } diff --git a/public/coins/bulgaria/2375.json b/public/coins/bulgaria/2375.json index 164332c..5985e45 100644 --- a/public/coins/bulgaria/2375.json +++ b/public/coins/bulgaria/2375.json @@ -38,10 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Madara horseman facing right.", "lettering": "БЪЛГАРИЯ", "lettering_scripts": [ @@ -50,15 +47,12 @@ } ], "lettering_translation": "Bulgaria", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1055-original.jpg", + "picture": "/photos/bulgarie/1055-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1055-180.jpg", "picture_copyright": "gef" }, "reverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "The twelve stars of the European community, denomination, and date.", "lettering": "10\r\n1999\r\nСТОТИНКИ", "lettering_scripts": [ @@ -67,15 +61,12 @@ } ], "lettering_translation": "10 Stotinki", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1056-original.jpg", + "picture": "/photos/bulgarie/1056-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1056-180.jpg", "picture_copyright": "gef" }, "comments": "There are two different versions from 1999:
\r\n- Yellow matte, thickness: 1.59mm, Rectangular rim
\r\n- White shiny, thickness: 1,54mm, Rounded rim
\r\nSee this topic
\r\n\"\" \"\"", - "tags": [ - "Cat or feline", - "Horse or equine" - ], + "tags": ["Cat or feline", "Horse or equine"], "references": [ { "catalogue": { @@ -118,5 +109,6 @@ "id": "1329", "name": "Bulgarian Mint" } - ] + ], + "color": "rgb(157.25,144.5,97.74999999999999)" } diff --git a/public/coins/bulgaria/2376.json b/public/coins/bulgaria/2376.json index 09ff657..e2d088e 100644 --- a/public/coins/bulgaria/2376.json +++ b/public/coins/bulgaria/2376.json @@ -38,10 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Madara horseman facing right and the country name above", "lettering": "БЪЛГАРИЯ", "lettering_scripts": [ @@ -50,15 +47,12 @@ } ], "lettering_translation": "Bulgaria", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1053-original.jpg", + "picture": "/photos/bulgarie/1053-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1053-180.jpg", "picture_copyright": "gef" }, "reverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "The twelve stars of the European community, denomination and date", "lettering": "20\r\n1999\r\nСТОТИНКИ", "lettering_scripts": [ @@ -67,15 +61,12 @@ } ], "lettering_translation": "20 \r\n1999\r\nStotinki", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1054-original.jpg", + "picture": "/photos/bulgarie/1054-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1054-180.jpg", "picture_copyright": "gef" }, "comments": "Two varieties for 1999:
\r\n- Small stars, ​angular/square shoulder
\r\n- Big stars, bold lettering, rounded shoulder
\r\n\"\"\"\"
\r\n\"\"", - "tags": [ - "Cat or feline", - "Horse or equine" - ], + "tags": ["Cat or feline", "Horse or equine"], "references": [ { "catalogue": { @@ -118,5 +109,6 @@ "id": "1329", "name": "Bulgarian Mint" } - ] + ], + "color": "rgb(157.98913043478262,149.67391304347825,97.01086956521736)" } diff --git a/public/coins/bulgaria/28608.json b/public/coins/bulgaria/28608.json index 56d63a9..988b995 100644 --- a/public/coins/bulgaria/28608.json +++ b/public/coins/bulgaria/28608.json @@ -38,10 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Madara horseman facing right and the country name at the top", "lettering": "БЪЛГАРИЯ", "lettering_scripts": [ @@ -50,15 +47,12 @@ } ], "lettering_translation": "Bulgaria", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1519-original.jpg", + "picture": "/photos/bulgarie/1519-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1519-180.jpg", "picture_copyright": "Cyrillius" }, "reverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Denomination above date, half-circle of 12 stars across the top", "lettering": "2\r\n2000\r\nСТОТИНКИ", "lettering_scripts": [ @@ -67,7 +61,7 @@ } ], "lettering_translation": "2\r\n2000\r\nStotinki", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1520-original.jpg", + "picture": "/photos/bulgarie/1520-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1520-180.jpg", "picture_copyright": "Cyrillius" }, @@ -85,10 +79,7 @@ "maxYear": 1999 } ], - "tags": [ - "Cat or feline", - "Horse or equine" - ], + "tags": ["Cat or feline", "Horse or equine"], "references": [ { "catalogue": { @@ -125,7 +116,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1521-original.jpg", + "picture": "/photos/bulgarie/1521-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1521-180.jpg", "picture_copyright": "Cyrillius" }, @@ -134,5 +125,6 @@ "id": "1329", "name": "Bulgarian Mint" } - ] + ], + "color": "rgb(228,180,82)" } diff --git a/public/coins/bulgaria/28610.json b/public/coins/bulgaria/28610.json index cc7edb7..e0e429d 100644 --- a/public/coins/bulgaria/28610.json +++ b/public/coins/bulgaria/28610.json @@ -38,10 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Madara horseman facing right with the country name above", "lettering": "БЪЛГАРИЯ", "lettering_scripts": [ @@ -50,15 +47,12 @@ } ], "lettering_translation": "Bulgaria", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1506-original.jpg", + "picture": "/photos/bulgarie/1506-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1506-180.jpg", "picture_copyright": "Cyrillius" }, "reverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Denomination above date, half circle of 12 stars across top", "lettering": "1\r\n2000\r\nСТОТИНКА", "lettering_scripts": [ @@ -67,7 +61,7 @@ } ], "lettering_translation": "1\r\n2000\r\nStotinka", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1507-original.jpg", + "picture": "/photos/bulgarie/1507-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1507-180.jpg", "picture_copyright": "Cyrillius" }, @@ -85,10 +79,7 @@ "maxYear": 1999 } ], - "tags": [ - "Cat or feline", - "Horse or equine" - ], + "tags": ["Cat or feline", "Horse or equine"], "references": [ { "catalogue": { @@ -125,7 +116,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1508-original.jpg", + "picture": "/photos/bulgarie/1508-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1508-180.jpg", "picture_copyright": "Cyrillius" }, @@ -134,5 +125,6 @@ "id": "1329", "name": "Bulgarian Mint" } - ] + ], + "color": "rgb(242,199,85)" } diff --git a/public/coins/bulgaria/28611.json b/public/coins/bulgaria/28611.json index 91da104..d93644f 100644 --- a/public/coins/bulgaria/28611.json +++ b/public/coins/bulgaria/28611.json @@ -38,10 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Madara horseman facing right with the country name above", "lettering": "БЪЛГАРИЯ", "lettering_scripts": [ @@ -50,15 +47,12 @@ } ], "lettering_translation": "Bulgaria", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1537-original.jpg", + "picture": "/photos/bulgarie/1537-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1537-180.jpg", "picture_copyright": "Cyrillius" }, "reverse": { - "engravers": [ - "Petar Stoikov", - "Vladimir Yossifov" - ], + "engravers": ["Petar Stoikov", "Vladimir Yossifov"], "description": "Denomination above date, half circle of 12 stars across top", "lettering": "5\r\n2000\r\nСТОТИНКИ", "lettering_scripts": [ @@ -67,7 +61,7 @@ } ], "lettering_translation": "5\r\n2000\r\nStotinki", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1538-original.jpg", + "picture": "/photos/bulgarie/1538-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1538-180.jpg", "picture_copyright": "Cyrillius" }, @@ -85,9 +79,7 @@ "maxYear": 1999 } ], - "tags": [ - "Horse or equine" - ], + "tags": ["Horse or equine"], "references": [ { "catalogue": { @@ -124,7 +116,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1539-original.jpg", + "picture": "/photos/bulgarie/1539-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1539-180.jpg", "picture_copyright": "Cyrillius" }, @@ -133,5 +125,6 @@ "id": "1329", "name": "Bulgarian Mint" } - ] + ], + "color": "rgb(212,152,44)" } diff --git a/public/coins/bulgaria/5109.json b/public/coins/bulgaria/5109.json index e1d65fe..4c4a73f 100644 --- a/public/coins/bulgaria/5109.json +++ b/public/coins/bulgaria/5109.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Petar Stoykov" - ], + "engravers": ["Petar Stoykov"], "description": "Bulgaria's patron saint, St. Ivan Rilsky (Saint John of Rila) (c876 - 946) is the first Bulgarian hermit and the founder of the grandest monastery in Bulgaria. This coin was released on September 2nd, 2002.", "lettering": "СВ. ИВАН РИЛСКИ\r\nБЪЛГАРИЯ", "lettering_scripts": [ @@ -49,14 +47,12 @@ } ], "lettering_translation": "St. Ivan Rilsky\r\nBulgaria", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1908-original.jpg", + "picture": "/photos/bulgarie/1908-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1908-180.jpg", "picture_copyright": "gef" }, "reverse": { - "engravers": [ - "Petar Stoykov" - ], + "engravers": ["Petar Stoykov"], "description": "Denomination and date.", "lettering": "1\r\nΛЕВ 2002", "lettering_scripts": [ @@ -65,7 +61,7 @@ } ], "lettering_translation": "1 Lev", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/1909-original.jpg", + "picture": "/photos/bulgarie/1909-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/1909-180.jpg", "picture_copyright": "gef" }, @@ -82,9 +78,7 @@ "maxYear": 2002 } ], - "tags": [ - "Cross" - ], + "tags": ["Cross"], "references": [ { "catalogue": { @@ -107,7 +101,7 @@ "orientation": "medal", "edge": { "description": "Alternating smooth and reeded segments (8 each)", - "picture": "https://en.numista.com/catalogue/photos/bulgarie/598-original.jpg", + "picture": "/photos/bulgarie/598-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/bulgarie/598-180.jpg", "picture_copyright": "ZacUK" }, @@ -116,5 +110,6 @@ "id": "1329", "name": "Bulgarian Mint" } - ] + ], + "color": "rgb(198,178,124)" } diff --git a/public/coins/canada/32604.json b/public/coins/canada/32604.json index fce5ad3..00eef6d 100644 --- a/public/coins/canada/32604.json +++ b/public/coins/canada/32604.json @@ -41,12 +41,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Susan Taylor" - ], - "designers": [ - "Susanna Blunt" - ], + "engravers": ["Susan Taylor"], + "designers": ["Susanna Blunt"], "description": "Head of Queen Elizabeth II, as at 77 years of age, bare headed, wearing necklace and earrings, facing right.", "lettering": "ELIZABETH II D·G·REGINA\r\n2012\r\nSB", "lettering_scripts": [ @@ -56,16 +52,14 @@ ], "unabridged_legend": "ELIZABETH II DEI GRATIA REGINA", "lettering_translation": "Elizabeth II Queen by the grace of God\n", - "picture": "https://en.numista.com/catalogue/photos/canada/3228-original.jpg", + "picture": "/photos/canada/3228-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/3228-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "designers": [ - "Robert-Ralph Carmichael" - ], + "designers": ["Robert-Ralph Carmichael"], "description": "Loon with security feature above, with the country name above and the denomination at the bottom", "lettering": "CANADA\r\nDOLLAR\r\nRRC", "lettering_scripts": [ @@ -73,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/canada/3229-original.jpg", + "picture": "/photos/canada/3229-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/3229-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -93,9 +87,7 @@ "maxYear": 2012 } ], - "tags": [ - "Bird" - ], + "tags": ["Bird"], "references": [ { "catalogue": { @@ -118,7 +110,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/canada/5108-original.jpg", + "picture": "/photos/canada/5108-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/5108-180.jpg", "picture_copyright": "Cyrillius" }, @@ -131,5 +123,6 @@ "id": "20", "name": "Royal Canadian Mint of Winnipeg" } - ] + ], + "color": "rgb(180,139,97)" } diff --git a/public/coins/canada/377.json b/public/coins/canada/377.json index ec0f1be..8978155 100644 --- a/public/coins/canada/377.json +++ b/public/coins/canada/377.json @@ -41,12 +41,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Susan Taylor" - ], - "designers": [ - "Susanna Blunt" - ], + "engravers": ["Susan Taylor"], + "designers": ["Susanna Blunt"], "description": "Head of Queen Elizabeth II, as at 77 years of age, bare headed, wearing necklace and earrings, facing right.", "lettering": "ELIZABETH II D•G•REGINA", "lettering_scripts": [ @@ -56,16 +52,14 @@ ], "unabridged_legend": "ELIZABETH II DEI GRATIA REGINA", "lettering_translation": "Elizabeth II Queen by the grace of God", - "picture": "https://en.numista.com/catalogue/photos/canada/64f9f5a3a10549.15917871-original.jpg", + "picture": "/photos/canada/64f9f5a3a10549.15917871-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/64f9f5a3a10549.15917871-180.jpg", "picture_copyright": "Carlos-Imbe", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Emanuel Otto Hahn" - ], + "engravers": ["Emanuel Otto Hahn"], "description": "The Bluenose under sail, a Canadian schooner from Nova Scotia, a celebrated racing ship and a symbol of the province, is surrounded with the face value and the inscription \"CANADA\"", "lettering": "CANADA\r\n2009\r\n10 CENTS\r\nH", "lettering_scripts": [ @@ -73,16 +67,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/canada/64f9f5a42e97f7.69114930-original.jpg", + "picture": "/photos/canada/64f9f5a42e97f7.69114930-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/64f9f5a42e97f7.69114930-180.jpg", "picture_copyright": "Carlos-Imbe", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "comments": "The Royal Mint's 2017 annual report lists a 199,925,000 mintage for regular circulating 2017 coins, even though the design that year was a Canada 150 design (which has a different mintage listed). However, starting in 2017, the annual report omitted the 'Coins struck dated 2017' table, meaning the 199,925,000 coins were likely struck in 2017 are dated 2016 or 2018.
\n
\n2006 the mint mark "P"  was last used and the Royal Canadian Mint Logo was also started.", - "tags": [ - "Boat or watercraft" - ], + "tags": ["Boat or watercraft"], "references": [ { "catalogue": { @@ -105,7 +97,7 @@ "orientation": "medal", "edge": { "description": "Milled", - "picture": "https://en.numista.com/catalogue/photos/canada/5125-original.jpg", + "picture": "/photos/canada/5125-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/5125-180.jpg", "picture_copyright": "Cyrillius" }, @@ -118,5 +110,6 @@ "id": "20", "name": "Royal Canadian Mint of Winnipeg" } - ] + ], + "color": "rgb(192.55102040816325,145.7142857142857,62.448979591836746)" } diff --git a/public/coins/canada/403.json b/public/coins/canada/403.json index 4c8876e..15d5292 100644 --- a/public/coins/canada/403.json +++ b/public/coins/canada/403.json @@ -41,12 +41,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Thomas Shingles" - ], - "designers": [ - "Mary Gillick" - ], + "engravers": ["Thomas Shingles"], + "designers": ["Mary Gillick"], "description": "Bust of Queen Elizabeth II, as at 27 years of age, wearing a wreath, facing right.", "lettering": "ELIZABETH II DEI GRATIA REGINA\r\nM·G·", "lettering_scripts": [ @@ -56,19 +52,15 @@ ], "unabridged_legend": "ELIZABETH II DEI GRATIA REGINA", "lettering_translation": "Elizabeth II Queen by the grace of God", - "picture": "https://en.numista.com/catalogue/photos/canada/619901a3a3da14.36192018-original.jpg", + "picture": "/photos/canada/619901a3a3da14.36192018-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/619901a3a3da14.36192018-180.jpg", "picture_copyright": "Ringgy", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Thomas Shingles" - ], - "designers": [ - "George Kruger Gray" - ], + "engravers": ["Thomas Shingles"], + "designers": ["George Kruger Gray"], "description": "A beaver, over the inscription \"CANADA\", is surrounded with the face value, flanked on both sides by a maple leaf. This coin uses the same small beaver as KM# 50a, adjusted to the round frame.", "lettering": "5 CENTS\r\nCANADA\r\n1964\r\nK·G", "lettering_scripts": [ @@ -76,16 +68,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/canada/619901a409f4c1.32692476-original.jpg", + "picture": "/photos/canada/619901a409f4c1.32692476-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/619901a409f4c1.32692476-180.jpg", "picture_copyright": "Ringgy", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "comments": "\"\"", - "tags": [ - "Rodent" - ], + "tags": ["Rodent"], "references": [ { "catalogue": { @@ -108,7 +98,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/canada/614e00bddee690.26293339-original.jpg", + "picture": "/photos/canada/614e00bddee690.26293339-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/614e00bddee690.26293339-180.jpg" }, "mints": [ @@ -116,5 +106,6 @@ "id": "19", "name": "Royal Canadian Mint of Ottawa" } - ] + ], + "color": "rgb(149.6739130434783,60.97826086956515,194.02173913043484)" } diff --git a/public/coins/canada/465.json b/public/coins/canada/465.json index 9946921..012d45c 100644 --- a/public/coins/canada/465.json +++ b/public/coins/canada/465.json @@ -41,12 +41,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Patrick Brindley" - ], - "designers": [ - "Arnold Machin" - ], + "engravers": ["Patrick Brindley"], + "designers": ["Arnold Machin"], "description": "Bust of Queen Elizabeth II, as at 37 years of age, wearing tiara, facing right.", "lettering": "ELIZABETH II D·G·REGINA", "lettering_scripts": [ @@ -56,19 +52,15 @@ ], "unabridged_legend": "ELIZABETH II DEI GRATIA REGINA", "lettering_translation": "Elizabeth II Queen by the grace of God", - "picture": "https://en.numista.com/catalogue/photos/canada/8268-original.jpg", + "picture": "/photos/canada/8268-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/8268-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Terry Smith" - ], - "designers": [ - "Robert-Ralph Carmichael" - ], + "engravers": ["Terry Smith"], + "designers": ["Robert-Ralph Carmichael"], "description": "A Canadian loon swimming on a lake with above the inscription \"CANADA\" and below the face value", "lettering": "CANADA\r\n1987\r\nDOLLAR\r\nRRC", "lettering_scripts": [ @@ -76,17 +68,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/canada/8269-original.jpg", + "picture": "/photos/canada/8269-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/8269-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "Note: for 1987 the coin's thickness is 1.95 mm and diameter 26.72 mm, but for 1988 and 1989 coins it is 1.75 mm and 26.50.
\n
\nThe common loon or the Canadian Loon (Binomial Name: Gavia immer)", - "tags": [ - "Bird", - "Lake" - ], + "tags": ["Bird", "Lake"], "references": [ { "catalogue": { @@ -116,7 +105,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/canada/5115-original.jpg", + "picture": "/photos/canada/5115-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/canada/5115-180.jpg", "picture_copyright": "Cyrillius" }, @@ -125,5 +114,6 @@ "id": "20", "name": "Royal Canadian Mint of Winnipeg" } - ] + ], + "color": "rgb(196,153,121)" } diff --git a/public/coins/chile/2842.json b/public/coins/chile/2842.json index d94026e..1a726fb 100644 --- a/public/coins/chile/2842.json +++ b/public/coins/chile/2842.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Chile\r\n11-IX\r\nSo\r\nFreedom", - "picture": "https://en.numista.com/catalogue/photos/chili/1661-original.jpg", + "picture": "/photos/chili/1661-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chili/1661-180.jpg", "picture_copyright": "Quodlibet" }, @@ -57,15 +57,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/chili/1662-original.jpg", + "picture": "/photos/chili/1662-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chili/1662-180.jpg", "picture_copyright": "Quodlibet" }, "comments": "1986 Varieties:
\r\n\"\"
\r\n
\r\n1988 Varieties:
\r\n\"\"", - "tags": [ - "Allegory", - "Wreath" - ], + "tags": ["Allegory", "Wreath"], "references": [ { "catalogue": { @@ -87,5 +84,6 @@ "id": "294", "name": "Casa de Moneda de Chile" } - ] + ], + "color": "rgb(209,156,81)" } diff --git a/public/coins/china/36732.json b/public/coins/china/36732.json index 6790a78..36fc805 100644 --- a/public/coins/china/36732.json +++ b/public/coins/china/36732.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Nurhaci Emperor", "lettering": "1616 - 1626", - "picture": "https://en.numista.com/catalogue/photos/chine/606231d4e994d3.74372623-original.jpg", + "picture": "/photos/chine/606231d4e994d3.74372623-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231d4e994d3.74372623-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231d63cadb6.41444147-original.jpg", + "picture": "/photos/chine/606231d63cadb6.41444147-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231d63cadb6.41444147-180.jpg", "picture_copyright": "baggasuresh" }, @@ -130,14 +130,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(141.66666666666669,124.66666666666664,113.33333333333333)" } diff --git a/public/coins/china/36733.json b/public/coins/china/36733.json index b279f06..60c82b9 100644 --- a/public/coins/china/36733.json +++ b/public/coins/china/36733.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Hong Taiji Emperor", "lettering": "1627 -1643", - "picture": "https://en.numista.com/catalogue/photos/chine/606231d76e8e00.74202044-original.jpg", + "picture": "/photos/chine/606231d76e8e00.74202044-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231d76e8e00.74202044-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231d892b9d7.50822137-original.jpg", + "picture": "/photos/chine/606231d892b9d7.50822137-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231d892b9d7.50822137-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(155.02840909090907,120.25568181818181,99.97159090909095)" } diff --git a/public/coins/china/36734.json b/public/coins/china/36734.json index d524194..7e83179 100644 --- a/public/coins/china/36734.json +++ b/public/coins/china/36734.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Shunzi Emperor", "lettering": "1644 - 1661", - "picture": "https://en.numista.com/catalogue/photos/chine/606231d9c1f135.59604933-original.jpg", + "picture": "/photos/chine/606231d9c1f135.59604933-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231d9c1f135.59604933-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231dad59eb7.11389822-original.jpg", + "picture": "/photos/chine/606231dad59eb7.11389822-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231dad59eb7.11389822-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,15 +121,13 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "thickness": 2.39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(164.33333333333334,117.11111111111113,90.66666666666666)" } diff --git a/public/coins/china/36735.json b/public/coins/china/36735.json index 6c56c40..54aaeb1 100644 --- a/public/coins/china/36735.json +++ b/public/coins/china/36735.json @@ -18,14 +18,14 @@ "obverse": { "description": "Bust of Kangxi Emperor", "lettering": "帝皇熙康清大\r\n1662 - 1722", - "picture": "https://en.numista.com/catalogue/photos/chine/606231dc05d215.51318411-original.jpg", + "picture": "/photos/chine/606231dc05d215.51318411-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231dc05d215.51318411-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", "lettering": "清大\r\n帝皇大二十", - "picture": "https://en.numista.com/catalogue/photos/chine/606231dd3aa5a8.07528815-original.jpg", + "picture": "/photos/chine/606231dd3aa5a8.07528815-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231dd3aa5a8.07528815-180.jpg", "picture_copyright": "baggasuresh" }, @@ -122,14 +122,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(139.9115044247788,124.11504424778762,115.08849557522119)" } diff --git a/public/coins/china/36736.json b/public/coins/china/36736.json index ee82dec..2019838 100644 --- a/public/coins/china/36736.json +++ b/public/coins/china/36736.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Yongzhen Emperor", "lettering": "1723 - 1735", - "picture": "https://en.numista.com/catalogue/photos/chine/606231de6464a4.68391610-original.jpg", + "picture": "/photos/chine/606231de6464a4.68391610-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231de6464a4.68391610-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231df9b4810.17354627-original.jpg", + "picture": "/photos/chine/606231df9b4810.17354627-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231df9b4810.17354627-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(158.1,100.30000000000004,96.9)" } diff --git a/public/coins/china/36737.json b/public/coins/china/36737.json index f9fd99b..d7fcbda 100644 --- a/public/coins/china/36737.json +++ b/public/coins/china/36737.json @@ -17,13 +17,13 @@ }, "obverse": { "description": "Bust of Qianlong Emperor", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e0bfdd47.88634228-original.jpg", + "picture": "/photos/chine/606231e0bfdd47.88634228-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e0bfdd47.88634228-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e1dba379.03535438-original.jpg", + "picture": "/photos/chine/606231e1dba379.03535438-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e1dba379.03535438-180.jpg", "picture_copyright": "baggasuresh" }, @@ -120,14 +120,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(162.44444444444446,117.11111111111113,92.55555555555554)" } diff --git a/public/coins/china/36738.json b/public/coins/china/36738.json index 7720b8e..9f1873f 100644 --- a/public/coins/china/36738.json +++ b/public/coins/china/36738.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Jiaqing Emperor", "lettering": "1796 - 1820", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e2f28b11.88656580-original.jpg", + "picture": "/photos/chine/606231e2f28b11.88656580-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e2f28b11.88656580-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e4490b12.02711543-original.jpg", + "picture": "/photos/chine/606231e4490b12.02711543-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e4490b12.02711543-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(161.7537313432836,117.98507462686567,93.24626865671641)" } diff --git a/public/coins/china/36739.json b/public/coins/china/36739.json index ab4ed7c..c4e2cd9 100644 --- a/public/coins/china/36739.json +++ b/public/coins/china/36739.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Daoguang Emperor", "lettering": "1821 - 1850", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e55d66b3.24946684-original.jpg", + "picture": "/photos/chine/606231e55d66b3.24946684-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e55d66b3.24946684-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e6762cb2.91339870-original.jpg", + "picture": "/photos/chine/606231e6762cb2.91339870-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e6762cb2.91339870-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(151.48514851485152,123.71287128712868,103.5148514851485)" } diff --git a/public/coins/china/36740.json b/public/coins/china/36740.json index 6ec8a36..ccaa12b 100644 --- a/public/coins/china/36740.json +++ b/public/coins/china/36740.json @@ -21,13 +21,13 @@ "obverse": { "description": "Bust of Xianfeng Emperor", "lettering": "1851 - 1861", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e7a15974.04430050-original.jpg", + "picture": "/photos/chine/606231e7a15974.04430050-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e7a15974.04430050-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231e8bbeac0.83670836-original.jpg", + "picture": "/photos/chine/606231e8bbeac0.83670836-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231e8bbeac0.83670836-180.jpg", "picture_copyright": "baggasuresh" }, @@ -124,15 +124,13 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "thickness": 2, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(164.33333333333334,120.88888888888889,90.66666666666666)" } diff --git a/public/coins/china/36741.json b/public/coins/china/36741.json index 2ce774a..77c5ccc 100644 --- a/public/coins/china/36741.json +++ b/public/coins/china/36741.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Tongxhi Emperor", "lettering": "1862 -1874", - "picture": "https://en.numista.com/catalogue/photos/chine/606231ea00cf51.47598134-original.jpg", + "picture": "/photos/chine/606231ea00cf51.47598134-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231ea00cf51.47598134-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231eb1f5264.67992186-original.jpg", + "picture": "/photos/chine/606231eb1f5264.67992186-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231eb1f5264.67992186-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(150.9183673469388,122.29591836734696,104.08163265306119)" } diff --git a/public/coins/china/36742.json b/public/coins/china/36742.json index 2617e85..8321bb7 100644 --- a/public/coins/china/36742.json +++ b/public/coins/china/36742.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Guanxu Emperor", "lettering": "1875 - 1908", - "picture": "https://en.numista.com/catalogue/photos/chine/606231ec454af0.23645790-original.jpg", + "picture": "/photos/chine/606231ec454af0.23645790-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231ec454af0.23645790-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231ed5ede24.41491594-original.jpg", + "picture": "/photos/chine/606231ed5ede24.41491594-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231ed5ede24.41491594-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(147.33333333333331,127.5,107.66666666666669)" } diff --git a/public/coins/china/36743.json b/public/coins/china/36743.json index fc6e2ba..0bb6ac9 100644 --- a/public/coins/china/36743.json +++ b/public/coins/china/36743.json @@ -18,13 +18,13 @@ "obverse": { "description": "Bust of Xuantong Emperor", "lettering": "1909 - 1911", - "picture": "https://en.numista.com/catalogue/photos/chine/606231ee890585.62943757-original.jpg", + "picture": "/photos/chine/606231ee890585.62943757-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231ee890585.62943757-180.jpg", "picture_copyright": "baggasuresh" }, "reverse": { "description": "Dragon", - "picture": "https://en.numista.com/catalogue/photos/chine/606231efdc5795.96381491-original.jpg", + "picture": "/photos/chine/606231efdc5795.96381491-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chine/606231efdc5795.96381491-180.jpg", "picture_copyright": "baggasuresh" }, @@ -121,14 +121,12 @@ } } ], - "tags": [ - "Fantasy animal", - "Monarch" - ], + "tags": ["Fantasy animal", "Monarch"], "weight": 20, "size": 39, "orientation": "medal", "edge": { "description": "Reeded" - } + }, + "color": "rgb(154.9065420560748,123.9252336448598,100.09345794392519)" } diff --git a/public/coins/colombia/1051.json b/public/coins/colombia/1051.json index 6584ac4..057c5f1 100644 --- a/public/coins/colombia/1051.json +++ b/public/coins/colombia/1051.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Dicken Castro" - ], + "engravers": ["Dicken Castro"], "description": "State name, denomination, and year of issue.", "lettering": "REPUBLICA DE COLOMBIA\r\n200 \r\nPESOS\r\n2005", "lettering_scripts": [ @@ -49,14 +47,14 @@ } ], "lettering_translation": "Republic of Colombia", - "picture": "https://en.numista.com/catalogue/photos/colombie/1302-original.jpg", + "picture": "/photos/colombie/1302-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1302-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" }, "reverse": { "description": "Quimbaya spindlewheel with stylized bird heads.", - "picture": "https://en.numista.com/catalogue/photos/colombie/1301-original.jpg", + "picture": "/photos/colombie/1301-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1301-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" @@ -111,7 +109,7 @@ } ], "lettering_translation": "Quimbayan motif *** 200 Pesos ***", - "picture": "https://en.numista.com/catalogue/photos/colombie/291-original.jpg", + "picture": "/photos/colombie/291-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/291-180.jpg", "picture_copyright": "ZacUK" }, @@ -120,5 +118,6 @@ "id": "4172", "name": "Fábrica de Moneda de Ibagué" } - ] + ], + "color": "rgb(149.3939393939394,131.36363636363637,105.60606060606061)" } diff --git a/public/coins/colombia/1073.json b/public/coins/colombia/1073.json index cff6d64..8dfd814 100644 --- a/public/coins/colombia/1073.json +++ b/public/coins/colombia/1073.json @@ -44,7 +44,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/colombie/1299-original.jpg", + "picture": "/photos/colombie/1299-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1299-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" @@ -57,7 +57,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/colombie/1300-original.jpg", + "picture": "/photos/colombie/1300-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1300-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" @@ -76,11 +76,7 @@ "maxYear": 2012 } ], - "tags": [ - "Bird", - "Coat of Arms", - "Wreath" - ], + "tags": ["Bird", "Coat of Arms", "Wreath"], "references": [ { "catalogue": { @@ -102,5 +98,6 @@ "id": "4172", "name": "Fábrica de Moneda de Ibagué" } - ] + ], + "color": "rgb(148.6092715231788,128.34437086092714,106.3907284768212)" } diff --git a/public/coins/colombia/2432.json b/public/coins/colombia/2432.json index e9b5bff..b2ea485 100644 --- a/public/coins/colombia/2432.json +++ b/public/coins/colombia/2432.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Colombia\r\nThe Guacari Tree", - "picture": "https://en.numista.com/catalogue/photos/colombie/1287-original.jpg", + "picture": "/photos/colombie/1287-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1287-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" @@ -58,15 +58,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/colombie/1288-original.jpg", + "picture": "/photos/colombie/1288-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1288-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" }, "comments": "Varieties exist both in terms of the ratio of design size and the inner circle and in terms of placement of writing along the rim (closer vs. farther from the coin edge):
\r\n\"\"
\r\n
\r\nVarieties exist on the 1997 lettering:
\r\n\"\"\"\" @Duberney Osorio
\r\n\"\"
\r\n
\r\nFalse coin, 2004, 6,8 grams with rotation error
\r\n\"\"
\r\n\"\"
\r\n@Darthvader (Numista)", - "tags": [ - "Tree" - ], + "tags": ["Tree"], "references": [ { "catalogue": { @@ -95,5 +93,6 @@ "id": "4172", "name": "Fábrica de Moneda de Ibagué" } - ] + ], + "color": "rgb(163.20000000000005,129.68571428571428,91.79999999999997)" } diff --git a/public/coins/colombia/2433.json b/public/coins/colombia/2433.json index fc2e01d..3d706ae 100644 --- a/public/coins/colombia/2433.json +++ b/public/coins/colombia/2433.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Colombia 2008\r\nLiberty and Order", - "picture": "https://en.numista.com/catalogue/photos/colombie/1297-original.jpg", + "picture": "/photos/colombie/1297-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1297-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" @@ -58,17 +58,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/colombie/1298-original.jpg", + "picture": "/photos/colombie/1298-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1298-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" }, "comments": "Documentation of numeral sizes in the denomination
\r\n\"\"
\r\nOle
\r\n
\r\nDesign varieties exist:
\r\n\"\"", - "tags": [ - "Bird", - "Coat of Arms", - "Wreath" - ], + "tags": ["Bird", "Coat of Arms", "Wreath"], "references": [ { "catalogue": { @@ -93,8 +89,9 @@ "description": "Two times the value, between two milled sections.\r\nVarieties exist with letters up or down when the obverse faces up.\r\nUntil 1995, three varieties of letter-size exist (small, medium or large letters), while coins after 1995 all have large letters.", "lettering": "CIEN PESOS ||||||||||||||||| CIEN PESOS |||||||||||||||||", "lettering_translation": "100 Pesos 100 Pesos", - "picture": "https://en.numista.com/catalogue/photos/colombie/650-original.jpg", + "picture": "/photos/colombie/650-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/650-180.jpg", "picture_copyright": "ZacUK" - } + }, + "color": "rgb(171.5178571428571,127.49999999999997,83.4821428571429)" } diff --git a/public/coins/colombia/7524.json b/public/coins/colombia/7524.json index 5abefb3..f848f87 100644 --- a/public/coins/colombia/7524.json +++ b/public/coins/colombia/7524.json @@ -45,14 +45,14 @@ } ], "lettering_translation": "Republic of Colombia\r\n1000 Pesos\r\n1996", - "picture": "https://en.numista.com/catalogue/photos/colombie/1282-original.jpg", + "picture": "/photos/colombie/1282-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1282-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" }, "reverse": { "description": "Filigree design", - "picture": "https://en.numista.com/catalogue/photos/colombie/1281-original.jpg", + "picture": "/photos/colombie/1281-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/colombie/1281-180.jpg", "picture_copyright": "Ciscoins.net", "picture_copyright_url": "https://web.archive.org/web/20201116183734/http://ciscoins.net/" @@ -81,5 +81,6 @@ "id": "4172", "name": "Fábrica de Moneda de Ibagué" } - ] + ], + "color": "rgb(153,134.05714285714288,102)" } diff --git a/public/coins/cyprus/2173.json b/public/coins/cyprus/2173.json index 69e39a0..2c1a8e7 100644 --- a/public/coins/cyprus/2173.json +++ b/public/coins/cyprus/2173.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Tatiana Sotiropoulou", - "Erik Maell" - ], + "engravers": ["Tatiana Sotiropoulou", "Erik Maell"], "description": "Two mouflons, a species of wild sheep found in Cyprus and representative of the island’s wildlife and the 12 stars of Europe around the rim", "lettering": "ΚΥΠΡΟΣ · 2010 · KIBRIS", "lettering_scripts": [ @@ -49,16 +46,14 @@ } ], "lettering_translation": "Cyprus 2010 Cyprus", - "picture": "https://en.numista.com/catalogue/photos/chypre/61f93b96d1bb75.07538638-original.jpg", + "picture": "/photos/chypre/61f93b96d1bb75.07538638-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/61f93b96d1bb75.07538638-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "EURO 1 CENT LL", "lettering_scripts": [ @@ -66,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/chypre/673-original.jpg", + "picture": "/photos/chypre/673-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/673-180.jpg", "picture_copyright": "Comptoir des Monnaies", "picture_copyright_url": "http://www.comptoir-des-monnaies.com" @@ -95,10 +90,7 @@ "maxYear": 2022 } ], - "tags": [ - "Sheep or ovine", - "Map" - ], + "tags": ["Sheep or ovine", "Map"], "references": [ { "catalogue": { @@ -121,7 +113,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/chypre/644-original.jpg", + "picture": "/photos/chypre/644-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/644-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +127,6 @@ "name": "The National Mint of the Bank of Greece" } ], - "count": 1 + "count": 1, + "color": "rgb(182,127,94)" } diff --git a/public/coins/cyprus/2175.json b/public/coins/cyprus/2175.json index 3c6ae11..286d2f5 100644 --- a/public/coins/cyprus/2175.json +++ b/public/coins/cyprus/2175.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Tatiana Sotiropoulou", - "Erik Maell" - ], + "engravers": ["Tatiana Sotiropoulou", "Erik Maell"], "description": "Mouflon, a species of wild sheep found on Cyprus and representative of the island’s wildlife.", "lettering": "ΚΥΠΡΟΣ·2010·KIBRIS", "lettering_scripts": [ @@ -51,16 +48,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/chypre/62c90b3f212cf3.13056628-original.jpg", + "picture": "/photos/chypre/62c90b3f212cf3.13056628-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/62c90b3f212cf3.13056628-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "The reverse of the coin shows Europe in relation to Africa and Asia on a globe; it also features the numeral 5 and the inscription EURO CENT.", "lettering": "5 \r\nEURO \r\nCENT\r\nLL", "lettering_scripts": [ @@ -68,7 +63,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/chypre/62c90b401315b3.35059836-original.jpg", + "picture": "/photos/chypre/62c90b401315b3.35059836-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/62c90b401315b3.35059836-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -99,10 +94,7 @@ "maxYear": 2022 } ], - "tags": [ - "Sheep or ovine", - "Map" - ], + "tags": ["Sheep or ovine", "Map"], "references": [ { "catalogue": { @@ -125,7 +117,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/chypre/645-original.jpg", + "picture": "/photos/chypre/645-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/645-180.jpg", "picture_copyright": "Cyrillius" }, @@ -139,5 +131,6 @@ "name": "The National Mint of the Bank of Greece" } ], - "count": 1 + "count": 1, + "color": "rgb(182,127,94)" } diff --git a/public/coins/cyprus/2178.json b/public/coins/cyprus/2178.json index b26c998..b201da0 100644 --- a/public/coins/cyprus/2178.json +++ b/public/coins/cyprus/2178.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Tatiana Sotiropoulou", - "Erik Maell" - ], + "engravers": ["Tatiana Sotiropoulou", "Erik Maell"], "description": "Kyrenia ship, a trading vessel which dates back to the fourth century BC and a symbol of Cyprus’s seafaring history and its importance as a centre of trade.", "lettering": "ΚΥΠΡΟΣ·2008·KIBRIS", "lettering_scripts": [ @@ -51,16 +48,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/chypre/605d6fb0cba4a0.61763198-original.jpg", + "picture": "/photos/chypre/605d6fb0cba4a0.61763198-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/605d6fb0cba4a0.61763198-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "The reverse of the coin shows a geographical image of Europe; it also features the numeral 50 and the inscription EURO CENT.", "lettering": "50 \r\nLL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -68,7 +63,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/chypre/605d6fb16932d3.04128821-original.jpg", + "picture": "/photos/chypre/605d6fb16932d3.04128821-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/605d6fb16932d3.04128821-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -98,11 +93,7 @@ "maxYear": 2022 } ], - "tags": [ - "Map", - "Sea", - "Boat or watercraft" - ], + "tags": ["Map", "Sea", "Boat or watercraft"], "references": [ { "catalogue": { @@ -125,7 +116,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/chypre/646-original.jpg", + "picture": "/photos/chypre/646-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/chypre/646-180.jpg", "picture_copyright": "Cyrillius" }, @@ -139,5 +130,6 @@ "name": "The National Mint of the Bank of Greece" } ], - "count": 1 + "count": 1, + "color": "rgb(156,124,33)" } diff --git a/public/coins/dominican republic/2504.json b/public/coins/dominican republic/2504.json index b38adf6..f64191a 100644 --- a/public/coins/dominican republic/2504.json +++ b/public/coins/dominican republic/2504.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Dominican Republic\r\nGod Fatherland Liberty\r\nDominican Republic\r\n5 Pesos", - "picture": "https://en.numista.com/catalogue/photos/republique_dominicaine/598-original.jpg", + "picture": "/photos/republique_dominicaine/598-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/republique_dominicaine/598-180.jpg", "picture_copyright": "Essor Prof" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Central Bank of the Dominican Republic\r\nSánchez\r\n2008", - "picture": "https://en.numista.com/catalogue/photos/republique_dominicaine/597-original.jpg", + "picture": "/photos/republique_dominicaine/597-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/republique_dominicaine/597-180.jpg", "picture_copyright": "Essor Prof" }, @@ -76,10 +76,7 @@ "maxYear": 2022 } ], - "tags": [ - "Coat of Arms", - "Politician" - ], + "tags": ["Coat of Arms", "Politician"], "references": [ { "catalogue": { @@ -116,5 +113,6 @@ "id": "24", "name": "Royal Mint of Spain" } - ] + ], + "color": "rgb(108,84,52)" } diff --git a/public/coins/ecuador/3002.json b/public/coins/ecuador/3002.json index f4b954c..121b7b0 100644 --- a/public/coins/ecuador/3002.json +++ b/public/coins/ecuador/3002.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Ecuador\r\nEugenio Espejo", - "picture": "https://en.numista.com/catalogue/photos/equateur/5fc7c8fa6e50a5.14949255-original.jpg", + "picture": "/photos/equateur/5fc7c8fa6e50a5.14949255-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/equateur/5fc7c8fa6e50a5.14949255-180.jpg", "picture_copyright": "Ben-jamin", "picture_license_name": "CC0", @@ -60,18 +60,14 @@ } ], "lettering_translation": "Central Bank of Ecuador\r\nYear 2000\r\nTen centavos", - "picture": "https://en.numista.com/catalogue/photos/equateur/5fc7c8fae5e4f2.19901762-original.jpg", + "picture": "/photos/equateur/5fc7c8fae5e4f2.19901762-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/equateur/5fc7c8fae5e4f2.19901762-180.jpg", "picture_copyright": "Ben-jamin", "picture_license_name": "CC0", "picture_license_url": "https://creativecommons.org/publicdomain/zero/1.0/deed.en" }, "comments": "Due to rampant inflation in the 1980's and 1990's, the government of Ecuador abandoned the Sucre in 2000 and adopted the United States Dollar. These coins where introduced to supplement the circulation of the Dime.", - "tags": [ - "Literature", - "Coat of Arms", - "Scientist" - ], + "tags": ["Literature", "Coat of Arms", "Scientist"], "references": [ { "catalogue": { @@ -100,5 +96,6 @@ "id": "29", "name": "Casa de Moneda de México" } - ] + ], + "color": "rgb(196,156,124)" } diff --git a/public/coins/estonia/16588.json b/public/coins/estonia/16588.json index d62c8e8..ed1c123 100644 --- a/public/coins/estonia/16588.json +++ b/public/coins/estonia/16588.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "L. Lõhmus" - ], + "engravers": ["L. Lõhmus"], "description": "A silhouette map of Estonia with the year above and the country name below and twelve five-pointed stars around the rim representing the European Union", "lettering": "2018\r\nEESTI", "lettering_scripts": [ @@ -48,14 +46,12 @@ } ], "lettering_translation": "2018\r\nEstonia", - "picture": "https://en.numista.com/catalogue/photos/estonie/565-original.jpg", + "picture": "/photos/estonie/565-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/estonie/565-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -63,14 +59,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/estonie/566-original.jpg", + "picture": "/photos/estonie/566-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/estonie/566-180.jpg", "picture_copyright": "Ulmo" }, "comments": "Coins from 2018 have large stars:
\r\n
\r\n\"\"
\r\n
\r\n2018 has both small and large stars (left coin made in Slovakian mint with bigger mintage, right Lithuanian mint with smaller mintage):
\r\n
\r\n\"\"", - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -93,7 +87,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/estonie/366-original.jpg", + "picture": "/photos/estonie/366-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/estonie/366-180.jpg", "picture_copyright": "Cyrillius" }, @@ -107,5 +101,6 @@ "name": "Royal Dutch Mint" } ], - "count": 1 + "count": 1, + "color": "rgb(204,177,148)" } diff --git a/public/coins/finland/91.json b/public/coins/finland/91.json index ac880d8..6001931 100644 --- a/public/coins/finland/91.json +++ b/public/coins/finland/91.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Heikki Aulis Häiväoja" - ], + "engravers": ["Heikki Aulis Häiväoja"], "description": "The Finnish heraldic lion is encircled by the twelve stars of Europe", "lettering": "2005 M", "lettering_scripts": [ @@ -47,16 +45,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/finlande/61fde2813256f5.16847117-original.jpg", + "picture": "/photos/finlande/61fde2813256f5.16847117-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/finlande/61fde2813256f5.16847117-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/finlande/61fde2821ebd14.28849922-original.jpg", + "picture": "/photos/finlande/61fde2821ebd14.28849922-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/finlande/61fde2821ebd14.28849922-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -84,12 +80,7 @@ "maxYear": 2023 } ], - "tags": [ - "Cat or feline", - "Firearm or handheld weapon", - "Map", - "Globe" - ], + "tags": ["Cat or feline", "Firearm or handheld weapon", "Map", "Globe"], "references": [ { "catalogue": { @@ -112,7 +103,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/finlande/1253-original.jpg", + "picture": "/photos/finlande/1253-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/finlande/1253-180.jpg", "picture_copyright": "Cyrillius" }, @@ -122,5 +113,6 @@ "name": "Mint of Finland" } ], - "count": 2 + "count": 2, + "color": "rgb(176,85,23)" } diff --git a/public/coins/france/100.json b/public/coins/france/100.json index fe8973d..3c928a4 100644 --- a/public/coins/france/100.json +++ b/public/coins/france/100.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Laurent Jorio" - ], + "engravers": ["Laurent Jorio"], "description": "A modern adaptation of the Sower, initially designed by Oscar Roty, representing \"France, which stays true to itself, whilst integrating into Europe\", is encircled by the twelve stars of Europe", "lettering": "RF 2001 L. JORIO d'ap. O. ROTY", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "unabridged_legend": "République française\r\nLaurent Jorio d'après Oscar Roty", - "picture": "https://en.numista.com/catalogue/photos/france/6289eb6f1395f8.91533745-original.jpg", + "picture": "/photos/france/6289eb6f1395f8.91533745-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/6289eb6f1395f8.91533745-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the 15 nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/6289eb6fa421c1.11082254-original.jpg", + "picture": "/photos/france/6289eb6fa421c1.11082254-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/6289eb6fa421c1.11082254-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -100,11 +96,7 @@ "maxYear": 2023 } ], - "tags": [ - "Map", - "Allegory", - "Phrygian cap" - ], + "tags": ["Map", "Allegory", "Phrygian cap"], "references": [ { "catalogue": { @@ -134,7 +126,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/france/8645-original.jpg", + "picture": "/photos/france/8645-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/8645-180.jpg", "picture_copyright": "Cyrillius" }, @@ -144,5 +136,6 @@ "name": "Monnaie de Paris" } ], - "count": 3 + "count": 3, + "color": "rgb(140,120,60)" } diff --git a/public/coins/france/12.json b/public/coins/france/12.json index 71d79eb..8057d38 100644 --- a/public/coins/france/12.json +++ b/public/coins/france/12.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Émile Rousseau" - ], + "engravers": ["Émile Rousseau"], "description": "A portrait in right profile of Charles de Gaulle is surrounded with the inscription \"RÉPUBLIQUE FRANÇAISE\" (French Republic)", "lettering": "CHARLES DE GAULLE\r\nER\r\nRÉPUBLIQUE FRANÇAISE", "lettering_scripts": [ @@ -52,15 +50,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/613499dd658130.74509920-original.jpg", + "picture": "/photos/france/613499dd658130.74509920-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/613499dd658130.74509920-180.jpg", "picture_copyright": "CGB", "picture_copyright_url": "http://www.cgb.fr" }, "reverse": { - "engravers": [ - "Émile Rousseau" - ], + "engravers": ["Émile Rousseau"], "description": "Denomination within six sided wreath, dates below", "lettering": "LIBERTÉ · EGALITÉ · FRATERNITÉ\r\n1 F.\r\n1958·1988", "lettering_scripts": [ @@ -68,16 +64,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/613499de4ad8c1.02797384-original.jpg", + "picture": "/photos/france/613499de4ad8c1.02797384-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/613499de4ad8c1.02797384-180.jpg", "picture_copyright": "CGB", "picture_copyright_url": "http://www.cgb.fr" }, "commemorated_topic": "30th Anniversary of the Fifth Republic", "comments": "\"\"", - "tags": [ - "Politician" - ], + "tags": ["Politician"], "references": [ { "catalogue": { @@ -114,7 +108,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/france/6157694a45aa84.62297514-original.jpg", + "picture": "/photos/france/6157694a45aa84.62297514-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/6157694a45aa84.62297514-180.jpg" }, "mints": [ @@ -122,5 +116,6 @@ "id": "15", "name": "Monnaie de Paris" } - ] + ], + "color": "rgb(200.00000000000009,154.99999999999991,54.999999999999915)" } diff --git a/public/coins/france/22652.json b/public/coins/france/22652.json index 908231a..90fc34f 100644 --- a/public/coins/france/22652.json +++ b/public/coins/france/22652.json @@ -46,7 +46,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/62c7ffaa1d19e0.57834511-original.jpg", + "picture": "/photos/france/62c7ffaa1d19e0.57834511-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/62c7ffaa1d19e0.57834511-180.jpg", "picture_copyright": "PLH28" }, @@ -58,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/62c7ffab925d70.22265296-original.jpg", + "picture": "/photos/france/62c7ffab925d70.22265296-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/62c7ffab925d70.22265296-180.jpg", "picture_copyright": "PLH28" }, @@ -286,18 +286,16 @@ "maxYear": 1969 } ], - "tags": [ - "Shell", - "Space" - ], + "tags": ["Shell", "Space"], "weight": 5, "size": 26, "thickness": 1.5, "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/france/62c7fface50b13.17829022-original.jpg", + "picture": "/photos/france/62c7fface50b13.17829022-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/62c7fface50b13.17829022-180.jpg", "picture_copyright": "PLH28" - } + }, + "color": "rgb(142,108,14)" } diff --git a/public/coins/france/24276.json b/public/coins/france/24276.json index 88e522e..e9253f7 100644 --- a/public/coins/france/24276.json +++ b/public/coins/france/24276.json @@ -46,7 +46,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/62c801bb9f44d2.91016543-original.jpg", + "picture": "/photos/france/62c801bb9f44d2.91016543-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/62c801bb9f44d2.91016543-180.jpg", "picture_copyright": "PLH28" }, @@ -58,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/62c801bceb85d5.57922851-original.jpg", + "picture": "/photos/france/62c801bceb85d5.57922851-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/62c801bceb85d5.57922851-180.jpg", "picture_copyright": "PLH28" }, @@ -286,19 +286,16 @@ "maxYear": 1969 } ], - "tags": [ - "Shell", - "Science", - "Space" - ], + "tags": ["Shell", "Science", "Space"], "weight": 5, "size": 26, "thickness": 1.5, "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/france/62c801be3a34f7.86937799-original.jpg", + "picture": "/photos/france/62c801be3a34f7.86937799-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/62c801be3a34f7.86937799-180.jpg", "picture_copyright": "PLH28" - } + }, + "color": "rgb(166,141,74)" } diff --git a/public/coins/france/3.json b/public/coins/france/3.json index b3540ca..6b4a0a4 100644 --- a/public/coins/france/3.json +++ b/public/coins/france/3.json @@ -43,9 +43,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Henri Lagriffoul" - ], + "engravers": ["Henri Lagriffoul"], "description": "Marianne in left profile wearing the Phrygian cap of liberty, a national emblem of France, is surrounded with the lettering.", "lettering": "REPUBLIQUE FRANÇAISE\r\nLAGRIFFOUL", "lettering_scripts": [ @@ -54,14 +52,12 @@ } ], "lettering_translation": "French Republic", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd206551cb6.99630125-original.jpg", + "picture": "/photos/france/5f9dd206551cb6.99630125-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd206551cb6.99630125-180.jpg", "picture_copyright": "nordboutik59" }, "reverse": { - "engravers": [ - "Adrien Dieudonné" - ], + "engravers": ["Adrien Dieudonné"], "description": "The face value is surrounded with a wheat ear, an olive branch and the French motto.", "lettering": "LIBERTE · EGALITE\r\n· FRATERNITE ·\r\n10\r\nCENTIMES\r\n1967\r\nA. DIEUDONNE", "lettering_scripts": [ @@ -70,7 +66,7 @@ } ], "lettering_translation": "Liberty Equality\r\nBrotherhood", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd2069663b8.25893871-original.jpg", + "picture": "/photos/france/5f9dd2069663b8.25893871-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd2069663b8.25893871-180.jpg", "picture_copyright": "Jérémy Pureur" }, @@ -88,10 +84,7 @@ "maxYear": 1982 } ], - "tags": [ - "Allegory", - "Phrygian cap" - ], + "tags": ["Allegory", "Phrygian cap"], "references": [ { "catalogue": { @@ -128,7 +121,7 @@ "orientation": "coin", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/france/7491-original.jpg", + "picture": "/photos/france/7491-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7491-180.jpg", "picture_copyright": "Cyrillius" }, @@ -141,5 +134,6 @@ "id": "14", "name": "Paris" } - ] + ], + "color": "rgb(173,149,81)" } diff --git a/public/coins/france/3510.json b/public/coins/france/3510.json index 3036b88..fe02878 100644 --- a/public/coins/france/3510.json +++ b/public/coins/france/3510.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Laurent Jorio" - ], + "engravers": ["Laurent Jorio"], "description": "The Sower walking left surrounded by rays, lines, and the 12 stars of the European Union", "lettering": "RF 2011 L. JORIO d'ap. O. ROTY", "lettering_scripts": [ @@ -53,16 +51,14 @@ ], "unabridged_legend": "Republique Française 2011 Laurent Jorio d'après Oscar Roty", "lettering_translation": "Republic of France 2011 Laurent Jorio after Oscar Roty", - "picture": "https://en.numista.com/catalogue/photos/france/63bdb3eb043d78.19121517-original.jpg", + "picture": "/photos/france/63bdb3eb043d78.19121517-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/63bdb3eb043d78.19121517-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "Geographic map of Europe with no internal borders with twelve vertical lines and stars to the left of denomination", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -70,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/6289f8530bc8a8.86021889-original.jpg", + "picture": "/photos/france/6289f8530bc8a8.86021889-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/6289f8530bc8a8.86021889-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -90,11 +86,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map", - "Allegory", - "Phrygian cap" - ], + "tags": ["Map", "Allegory", "Phrygian cap"], "references": [ { "catalogue": { @@ -124,7 +116,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/france/8644-original.jpg", + "picture": "/photos/france/8644-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/8644-180.jpg", "picture_copyright": "Cyrillius" }, @@ -134,5 +126,6 @@ "name": "Monnaie de Paris" } ], - "count": 4 + "count": 4, + "color": "rgb(244,212,68)" } diff --git a/public/coins/france/4.json b/public/coins/france/4.json index 13a13d8..179e777 100644 --- a/public/coins/france/4.json +++ b/public/coins/france/4.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Henri Lagriffoul" - ], + "engravers": ["Henri Lagriffoul"], "description": "Marianne in left profile wearing the Phrygian cap of liberty, a national emblem of France, is surrounded with the lettering: \"REPUBLIQUE FRANÇAISE\" (French Republic)", "lettering": "REPUBLIQUE FRANÇAISE\r\nLAGRIFFOUL", "lettering_scripts": [ @@ -53,14 +51,12 @@ } ], "lettering_translation": "French Republic", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd2c65f7916.51386836-original.jpg", + "picture": "/photos/france/5f9dd2c65f7916.51386836-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd2c65f7916.51386836-180.jpg", "picture_copyright": "nordboutik59" }, "reverse": { - "engravers": [ - "Adrien Dieudonné" - ], + "engravers": ["Adrien Dieudonné"], "description": "The face value is surrounded with a wheat ear, an olive branch and the French motto: \"LIBERTE - EGALITE - FRATERNITE\" (liberty, equality, fraternity)", "lettering": "A.DIEUDONNE\r\nLIBERTE·EGALITE\r\n·FRATERNITE·\r\n20\r\nCENTIMES\r\n1968", "lettering_scripts": [ @@ -69,15 +65,12 @@ } ], "lettering_translation": "Liberty, Equality\r\nFraternity", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd2c6a02336.42871704-original.jpg", + "picture": "/photos/france/5f9dd2c6a02336.42871704-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd2c6a02336.42871704-180.jpg", "picture_copyright": "Jérémy Pureur" }, "comments": "Different privy marks throughout mintages:
\r\nOwl 1962-74 Raymond Joly
\r\nDolphin 1975-94 Rousseau
\r\nBee 1994-2000 Pierre Rodier
\r\nHorseshoe  2001 Gérard Buquoy
\r\n
\r\nVariante pour 1997
\r\n\"\"
\r\nVariante pour 2000
\r\n\"\"", - "tags": [ - "Allegory", - "Phrygian cap" - ], + "tags": ["Allegory", "Phrygian cap"], "references": [ { "catalogue": { @@ -114,7 +107,7 @@ "orientation": "coin", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/france/7492-original.jpg", + "picture": "/photos/france/7492-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7492-180.jpg", "picture_copyright": "Cyrillius" }, @@ -127,5 +120,6 @@ "id": "14", "name": "Paris" } - ] + ], + "color": "rgb(208,196,132)" } diff --git a/public/coins/france/5.json b/public/coins/france/5.json index ea494ab..09dbcae 100644 --- a/public/coins/france/5.json +++ b/public/coins/france/5.json @@ -45,9 +45,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Louis-Oscar Roty" - ], + "engravers": ["Louis-Oscar Roty"], "description": "The Sower, designed by Oscar Roty in 1900: a national emblem of the French Republic", "lettering": "REPUBLIQUE FRANÇAISE\r\nO. Roty", "lettering_scripts": [ @@ -56,14 +54,12 @@ } ], "lettering_translation": "French Republic", - "picture": "https://en.numista.com/catalogue/photos/france/5607-original.jpg", + "picture": "/photos/france/5607-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5607-180.jpg", "picture_copyright": "HOOK" }, "reverse": { - "engravers": [ - "Louis-Oscar Roty" - ], + "engravers": ["Louis-Oscar Roty"], "description": "Underneath the face value, an olive branch is surrounded with the French motto: \"LIBERTE - EGALITE - FRATERNITE\" (liberty, equality, fraternity)", "lettering": "LIBERTE·EGALITE·FRATERNITE\r\n1/2\r\nFRANC\r\n2000", "lettering_scripts": [ @@ -72,7 +68,7 @@ } ], "lettering_translation": "Liberty, Equality, Fraternity", - "picture": "https://en.numista.com/catalogue/photos/france/5608-original.jpg", + "picture": "/photos/france/5608-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5608-180.jpg" }, "comments": "Different privy marks throughout mintages:
\r\nOwl 1958-74 Raymond Joly
\r\nDolphin 1974-94 Rousseau
\r\nBee 1994- Pierre Rodier
\r\nHorseshoe 2000-2002 Gérard Buquoy
\r\n
\r\n The 1993 'No mark' has missing privy marks both sides of denomination ...
\r\n\"\"
\r\n
\r\n\"\"
\r\n
\r\n\"\"", @@ -89,10 +85,7 @@ "maxYear": 2001 } ], - "tags": [ - "Allegory", - "Phrygian cap" - ], + "tags": ["Allegory", "Phrygian cap"], "references": [ { "catalogue": { @@ -129,7 +122,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/france/7493-original.jpg", + "picture": "/photos/france/7493-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7493-180.jpg", "picture_copyright": "Cyrillius" }, @@ -142,5 +135,6 @@ "id": "14", "name": "Paris" } - ] + ], + "color": "rgb(60,92,156)" } diff --git a/public/coins/france/6373.json b/public/coins/france/6373.json index 62787a5..ab6bd84 100644 --- a/public/coins/france/6373.json +++ b/public/coins/france/6373.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Laurent Jorio" - ], + "engravers": ["Laurent Jorio"], "description": "Line image of \"The Sower\", a long-standing symbol of France surrounded by the twelve stars of the European Union.", "lettering": "L. JORIO d'ap. O. ROTY\r\n2011 RF", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "unabridged_legend": "République française", - "picture": "https://en.numista.com/catalogue/photos/france/3410-original.jpg", + "picture": "/photos/france/3410-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/3410-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the nations of the European Union", "lettering": "20 \r\nLL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/3411-original.jpg", + "picture": "/photos/france/3411-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/3411-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", @@ -100,11 +96,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map", - "Allegory", - "Phrygian cap" - ], + "tags": ["Map", "Allegory", "Phrygian cap"], "references": [ { "catalogue": { @@ -134,7 +126,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/france/8646-original.jpg", + "picture": "/photos/france/8646-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/8646-180.jpg", "picture_copyright": "Cyrillius" }, @@ -144,5 +136,6 @@ "name": "Monnaie de Paris" } ], - "count": 1 + "count": 1, + "color": "rgb(188,164,84)" } diff --git a/public/coins/france/681.json b/public/coins/france/681.json index 8fcf41e..e896d04 100644 --- a/public/coins/france/681.json +++ b/public/coins/france/681.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Atelier de gravure d'après Augustin Dupré" - ], + "engravers": ["Atelier de gravure d'après Augustin Dupré"], "description": "The denomination within a wreath and the date below.", "lettering": "REPUBLIQUE FRANÇAISE\r\n50\r\nFRANCS \r\n⦁ 1975 ⦁", "lettering_scripts": [ @@ -53,16 +51,14 @@ } ], "lettering_translation": "French Republic", - "picture": "https://en.numista.com/catalogue/photos/france/8653-original.jpg", + "picture": "/photos/france/8653-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/8653-180.jpg", "picture_copyright": "smy77", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Atelier de gravure d'après Augustin Dupré" - ], + "engravers": ["Atelier de gravure d'après Augustin Dupré"], "description": "The Liberty and the Equality, two ideologies which are not often compatible, reconciled with Fraternity by Hercules; the French motto above.", "lettering": "LIBERTÉ ÉGALITÉ FRATERNITÉ\r\n⦁ Dupré ⦁", "lettering_scripts": [ @@ -70,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/8652-original.jpg", + "picture": "/photos/france/8652-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/8652-180.jpg", "picture_copyright": "smy77", "picture_license_name": "CC BY", @@ -112,9 +108,7 @@ "maxYear": 1980 } ], - "tags": [ - "Wreath" - ], + "tags": ["Wreath"], "references": [ { "catalogue": { @@ -158,7 +152,7 @@ "orientation": "coin", "edge": { "description": "Designs in relief", - "picture": "https://en.numista.com/catalogue/photos/france/8654-original.jpg", + "picture": "/photos/france/8654-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/8654-180.jpg", "picture_copyright": "smy77", "picture_license_name": "CC BY", @@ -169,5 +163,6 @@ "id": "15", "name": "Monnaie de Paris" } - ] + ], + "color": "rgb(188,140,60)" } diff --git a/public/coins/france/8.json b/public/coins/france/8.json index 989aa22..054a3c3 100644 --- a/public/coins/france/8.json +++ b/public/coins/france/8.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Louis-Oscar Roty" - ], + "engravers": ["Louis-Oscar Roty"], "description": "The Sower, designed by Oscar Roty in 1900, a national emblem of the French Republic", "lettering": "REPUBLIQUE FRANÇAISE\r\nO. Roty", "lettering_scripts": [ @@ -53,14 +51,12 @@ } ], "lettering_translation": "French Republic.", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd414800e77.93186810-original.jpg", + "picture": "/photos/france/5f9dd414800e77.93186810-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd414800e77.93186810-180.jpg", "picture_copyright": "nordboutik59" }, "reverse": { - "engravers": [ - "Louis-Oscar Roty" - ], + "engravers": ["Louis-Oscar Roty"], "description": "Olive branches, oak branches and wheat ears, underneath the face value, are surrounded with the French motto.", "lettering": "LIBERTE•EGALITE•FRATERNITE\r\n5\r\nFRANCS\r\n1970", "lettering_scripts": [ @@ -69,7 +65,7 @@ } ], "lettering_translation": "LIBERTY • EQUALITY • FRATERNITY", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd414d40668.27338105-original.jpg", + "picture": "/photos/france/5f9dd414d40668.27338105-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd414d40668.27338105-180.jpg", "picture_copyright": "Jérémy Pureur" }, @@ -120,9 +116,7 @@ "maxYear": 2001 } ], - "tags": [ - "Phrygian cap" - ], + "tags": ["Phrygian cap"], "references": [ { "catalogue": { @@ -159,7 +153,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/france/7498-original.jpg", + "picture": "/photos/france/7498-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7498-180.jpg", "picture_copyright": "Cyrillius" }, @@ -172,5 +166,6 @@ "id": "14", "name": "Paris" } - ] + ], + "color": "rgb(80.52631578947368,107.36842105263155,174.47368421052633)" } diff --git a/public/coins/france/9.json b/public/coins/france/9.json index e3abc28..0985256 100644 --- a/public/coins/france/9.json +++ b/public/coins/france/9.json @@ -43,9 +43,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jean Luc Maréchal" - ], + "engravers": ["Jean Luc Maréchal"], "description": "A representation of the Génie de la Liberté (the Spirit of Freedom, approximately), a sculpture located at the top of the \"July Column\" in Paris, is flanked with the letters R and F, the initials of the French Republic. The rim constitutes a striated geometrical pattern.", "lettering": "R F", "lettering_scripts": [ @@ -55,14 +53,12 @@ ], "unabridged_legend": "République Française", "lettering_translation": "French Republic", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd4986e4891.47003450-original.jpg", + "picture": "/photos/france/5f9dd4986e4891.47003450-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd4986e4891.47003450-180.jpg", "picture_copyright": "nordboutik59" }, "reverse": { - "engravers": [ - "Jean Luc Maréchal" - ], + "engravers": ["Jean Luc Maréchal"], "description": "The face value, crossed out with wide stripes, is surrounded by the French motto: \"LIBERTÉ ÉGALITÉ FRATERNITÉ\" (liberty, equality, fraternity)", "lettering": "LIBERTÉ EGALITÉ\r\n10F\r\n1989\r\nFRATERNITÉ", "lettering_scripts": [ @@ -71,7 +67,7 @@ } ], "lettering_translation": "Liberty Equality\r\nBrotherhood", - "picture": "https://en.numista.com/catalogue/photos/france/5f9dd498b4d939.41396241-original.jpg", + "picture": "/photos/france/5f9dd498b4d939.41396241-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/5f9dd498b4d939.41396241-180.jpg", "picture_copyright": "Jérémy Pureur" }, @@ -89,10 +85,7 @@ "maxYear": 2001 } ], - "tags": [ - "Sculpture", - "Phrygian cap" - ], + "tags": ["Sculpture", "Phrygian cap"], "references": [ { "catalogue": { @@ -129,7 +122,7 @@ "orientation": "coin", "edge": { "description": "5 groups of reeds", - "picture": "https://en.numista.com/catalogue/photos/france/7499-original.jpg", + "picture": "/photos/france/7499-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7499-180.jpg", "picture_copyright": "Cyrillius" }, @@ -138,5 +131,6 @@ "id": "15", "name": "Monnaie de Paris" } - ] + ], + "color": "rgb(182,140,66)" } diff --git a/public/coins/france/97.json b/public/coins/france/97.json index 0bed880..aa4e7ab 100644 --- a/public/coins/france/97.json +++ b/public/coins/france/97.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Fabienne Courtiade" - ], + "engravers": ["Fabienne Courtiade"], "description": "A young, feminine Marianne with determined features that embody the desire for a sound and lasting Europe. Around twelve five-pointed stars representing the European Union.", "lettering": "RF\r\n2006\r\nF. COURTIADE", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/3926-original.jpg", + "picture": "/photos/france/3926-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/3926-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "1 \r\nEURO\r\nCENT\r\nLL", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/3928-original.jpg", + "picture": "/photos/france/3928-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/3928-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", @@ -88,9 +84,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -120,7 +114,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/france/7449-original.jpg", + "picture": "/photos/france/7449-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7449-180.jpg", "picture_copyright": "Cyrillius" }, @@ -130,5 +124,6 @@ "name": "Monnaie de Paris" } ], - "count": 50 + "count": 50, + "color": "rgb(204,132,52)" } diff --git a/public/coins/france/99.json b/public/coins/france/99.json index 8f05747..f744980 100644 --- a/public/coins/france/99.json +++ b/public/coins/france/99.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Fabienne Courtiade" - ], + "engravers": ["Fabienne Courtiade"], "description": "A young, feminine Marianne with determined features that embody the desire for a sound and lasting Europe. Around twelve five-pointed stars representing the European Union.", "lettering": "RF\r\n2005\r\nF. COURTIADE", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "unabridged_legend": "République française", - "picture": "https://en.numista.com/catalogue/photos/france/61fde3008fb875.29810810-original.jpg", + "picture": "/photos/france/61fde3008fb875.29810810-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/61fde3008fb875.29810810-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "5\r\nEURO\r\nCENT\r\nLL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/france/61fde301a02a94.57833549-original.jpg", + "picture": "/photos/france/61fde301a02a94.57833549-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/61fde301a02a94.57833549-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -89,9 +85,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -121,7 +115,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/france/7450-original.jpg", + "picture": "/photos/france/7450-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/france/7450-180.jpg", "picture_copyright": "Cyrillius" }, @@ -131,5 +125,6 @@ "name": "Monnaie de Paris" } ], - "count": 18 + "count": 18, + "color": "rgb(164,100,52)" } diff --git a/public/coins/germany/105.json b/public/coins/germany/105.json index 31eadbb..c4f6099 100644 --- a/public/coins/germany/105.json +++ b/public/coins/germany/105.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Rolf Lederbogen" - ], + "engravers": ["Rolf Lederbogen"], "description": "An oak twig, symbolizing stability, is surrounded with the twelve stars of Europe.", "lettering": "D 2005", "lettering_scripts": [ @@ -47,16 +45,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/1383-original.jpg", + "picture": "/photos/allemagne/1383-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1383-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia, engraver's initials to the right.", "lettering": "1 EURO \r\nCENT \r\nLL", "lettering_scripts": [ @@ -64,16 +60,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/1384-original.jpg", + "picture": "/photos/allemagne/1384-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1384-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "comments": "The 2002 coins have a KMB Variant.
\r\nThe KMB has a smaller (by about 10%) reverse design.
\r\nKMB = Kleines Münz Bild  [petite pièce de monnaie / small coin]
\r\n
\r\n\"\"
\r\n
\r\n1, 2 & 5 cents with large and small oak leaves
\r\n\"\"
\r\n
\r\n\"\"
\r\n© Ulmo
\r\n
\r\nOfficial Coincard of the Federal Ministry of Finance
\r\n2013
\r\n\"\"
\r\n2016
\r\n\"\"", - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -103,7 +97,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2009-original.jpg", + "picture": "/photos/allemagne/2009-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2009-180.jpg", "picture_copyright": "Cyrillius" }, @@ -129,5 +123,6 @@ "name": "Hamburgische Münze" } ], - "count": 15 + "count": 15, + "color": "rgb(222,148,107)" } diff --git a/public/coins/germany/107.json b/public/coins/germany/107.json index 5d999ca..4f9663f 100644 --- a/public/coins/germany/107.json +++ b/public/coins/germany/107.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Rolf Lederbogen" - ], + "engravers": ["Rolf Lederbogen"], "description": "An oak twig, symbolizing stability, is surrounded with the twelve stars of Europe.", "lettering": "A 2006", "lettering_scripts": [ @@ -47,16 +45,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/61fde61bf27925.91167153-original.jpg", + "picture": "/photos/allemagne/61fde61bf27925.91167153-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/61fde61bf27925.91167153-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/61fde61ce40330.51779213-original.jpg", + "picture": "/photos/allemagne/61fde61ce40330.51779213-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/61fde61ce40330.51779213-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -100,7 +96,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2010-original.jpg", + "picture": "/photos/allemagne/2010-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2010-180.jpg", "picture_copyright": "Cyrillius" }, @@ -126,5 +122,6 @@ "name": "Hamburgische Münze" } ], - "count": 7 + "count": 7, + "color": "rgb(199,119,60)" } diff --git a/public/coins/germany/108.json b/public/coins/germany/108.json index 917c0dc..e2ebeeb 100644 --- a/public/coins/germany/108.json +++ b/public/coins/germany/108.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Reinhart Heinsdorff" - ], + "engravers": ["Reinhart Heinsdorff"], "description": "The Brandenburg Gate, symbol of the division of Germany and its subsequent unification, is surrounded with the twelve stars of Europe.", "lettering": "2002 F", "lettering_scripts": [ @@ -47,15 +45,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/2191-original.jpg", + "picture": "/photos/allemagne/2191-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2191-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -63,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/2192-original.jpg", + "picture": "/photos/allemagne/2192-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2192-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" @@ -82,10 +78,7 @@ "maxYear": 2023 } ], - "tags": [ - "Other building", - "Map" - ], + "tags": ["Other building", "Map"], "references": [ { "catalogue": { @@ -115,7 +108,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2235-original.jpg", + "picture": "/photos/allemagne/2235-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2235-180.jpg", "picture_copyright": "Cyrillius" }, @@ -141,5 +134,6 @@ "name": "Hamburgische Münze" } ], - "count": 3 + "count": 3, + "color": "rgb(204,160,73)" } diff --git a/public/coins/germany/109.json b/public/coins/germany/109.json index 52f131f..2f66040 100644 --- a/public/coins/germany/109.json +++ b/public/coins/germany/109.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Reinhart Heinsdorff" - ], + "engravers": ["Reinhart Heinsdorff"], "description": "The Brandenburg Gate, the symbol of the division of Germany and its subsequent unification, with the 12 stars of Europe around the rim", "lettering": "2002\r\nJ", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/1894-original.jpg", + "picture": "/photos/allemagne/1894-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1894-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -62,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/1895-original.jpg", + "picture": "/photos/allemagne/1895-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1895-180.jpg", "picture_copyright": "nalaberong" }, @@ -109,7 +105,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2237-original.jpg", + "picture": "/photos/allemagne/2237-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2237-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +131,6 @@ "name": "Hamburgische Münze" } ], - "count": 1 + "count": 1, + "color": "rgb(164,126,74)" } diff --git a/public/coins/germany/6319.json b/public/coins/germany/6319.json index 874c79d..99d5bca 100644 --- a/public/coins/germany/6319.json +++ b/public/coins/germany/6319.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Reinhart Heinsdorff" - ], + "engravers": ["Reinhart Heinsdorff"], "description": "The Brandenburg Gate, a symbol of the division of Germany and its subsequent unification surrounded with the twelve stars of Europe", "lettering": "2007 J", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/2279-original.jpg", + "picture": "/photos/allemagne/2279-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2279-180.jpg", "picture_copyright": "Beehive" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20 EURO CENT LL", "lettering_scripts": [ @@ -62,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/2280-original.jpg", + "picture": "/photos/allemagne/2280-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2280-180.jpg", "picture_copyright": "Beehive" }, @@ -109,7 +105,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2236-original.jpg", + "picture": "/photos/allemagne/2236-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2236-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +131,6 @@ "name": "Hamburgische Münze" } ], - "count": 1 + "count": 1, + "color": "rgb(170,162,79)" } diff --git a/public/coins/germany/844.json b/public/coins/germany/844.json index b33afe1..4c2f245 100644 --- a/public/coins/germany/844.json +++ b/public/coins/germany/844.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Reinhart Heinsdorff" - ], + "engravers": ["Reinhart Heinsdorff"], "description": "Portrait of Konrad Adenauer (1876-1967), the first German chancellor from 1949 to 1963 and a key player in rebuilding the France-Germany relationship and creating the European community with the dates representing the 20th Anniversary of the Constitution of the Federal Republic of Germany", "lettering": "·BUNDESREPUBLIK DEUTSCHLAND·\r\n1949 1969", "lettering_scripts": [ @@ -49,14 +47,12 @@ } ], "lettering_translation": "Federal Republic of Germany\r\n1949 1969", - "picture": "https://en.numista.com/catalogue/photos/allemagne/1964-original.jpg", + "picture": "/photos/allemagne/1964-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1964-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Reinhart Heinsdorff" - ], + "engravers": ["Reinhart Heinsdorff"], "description": "An eagle facing left, emblem of Germany and the mintmark below the left claw", "lettering": "BUNDESREPUBLIK DEUTSCHLAND\r\n1978\r\nG\r\n2 DEUTSCHE MARK", "lettering_scripts": [ @@ -65,7 +61,7 @@ } ], "lettering_translation": "Federal Republic of Germany\r\n1978\r\nG\r\n2 Deutsche Mark", - "picture": "https://en.numista.com/catalogue/photos/allemagne/1963-original.jpg", + "picture": "/photos/allemagne/1963-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1963-180.jpg", "picture_copyright": "Ulmo" }, @@ -138,9 +134,7 @@ "maxYear": 2001 } ], - "tags": [ - "Politician" - ], + "tags": ["Politician"], "references": [ { "catalogue": { @@ -172,7 +166,7 @@ "description": "Smooth with the inscription of the German motto\r\n\r\nThere are two variants for the edge text:\r\n1. text readable with obverse face up\r\n2. text readable upside down", "lettering": "EINIGKEIT UND RECHT UND FREIHEIT", "lettering_translation": "Unity and Justice and Freedom", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2036-original.jpg", + "picture": "/photos/allemagne/2036-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2036-180.jpg", "picture_copyright": "Cyrillius" }, @@ -193,5 +187,6 @@ "id": "4", "name": "Hamburgische Münze" } - ] + ], + "color": "rgb(113.12030075187968,122.70676691729317,141.87969924812032)" } diff --git a/public/coins/germany/846.json b/public/coins/germany/846.json index e25c036..a8856fe 100644 --- a/public/coins/germany/846.json +++ b/public/coins/germany/846.json @@ -46,15 +46,13 @@ } ], "lettering_translation": "Federal Republic of Germany", - "picture": "https://en.numista.com/catalogue/photos/allemagne/6280f8dd78c295.68137920-original.jpg", + "picture": "/photos/allemagne/6280f8dd78c295.68137920-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/6280f8dd78c295.68137920-180.jpg", "picture_copyright": "PCGS", "picture_copyright_url": "https://www.pcgs.com/" }, "reverse": { - "engravers": [ - "J. Bernhart" - ], + "engravers": ["J. Bernhart"], "description": "Two oak branches on either side of the face value.", "lettering": "1 \r\nDEUTSCHE \r\nMARK \r\n1965", "lettering_scripts": [ @@ -63,15 +61,13 @@ } ], "lettering_translation": "1 German Mark", - "picture": "https://en.numista.com/catalogue/photos/allemagne/6280f8dda0c876.82924426-original.jpg", + "picture": "/photos/allemagne/6280f8dda0c876.82924426-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/6280f8dda0c876.82924426-180.jpg", "picture_copyright": "PCGS", "picture_copyright_url": "https://www.pcgs.com/" }, "comments": "Different obverse and reverse designs (visible in eagle's head, legend lettering):
\r\n
\r\n-Type A (1950-1970): Obverse 1: tongue near the lower beak, large eyeball, thicker letters; Reverse 1: thicker letters with a smaller base
\r\n-Type B (1971-1973): Obverse 1: tongue near the lower beak, large eyeball, thicker letters; Reverse 2: thinner letters with larger and more detailed base
\r\n-Type C (1971-2001): Obverse 2: tongue in the middle, smaller eyeball, thinner letters; Reverse 2: thinner letters with larger and more detailed base
\r\n-Type D (1974): Obverse 2: tongue in the middle, smaller eyeball, thinner letters; Reverse 1: thicker letters with a smaller base
\r\n
\r\nsee here for pictures (Type C and D switched):
\r\nhttps://monnaiesetvarietes.numista.com/FICHES/Allemagne%20RFA/ALLEMAGNE%201%20Mark%20110.pdf", - "tags": [ - "Bird" - ], + "tags": ["Bird"], "references": [ { "catalogue": { @@ -102,7 +98,7 @@ "edge": { "description": "Smooth with imprints", "lettering": "~*~ ~·~ ~*~ ~·~ ~*~ ~·~", - "picture": "https://en.numista.com/catalogue/photos/allemagne/1818-original.jpg", + "picture": "/photos/allemagne/1818-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1818-180.jpg", "picture_copyright": "ZacUK" }, @@ -127,5 +123,6 @@ "id": "4", "name": "Hamburgische Münze" } - ] + ], + "color": "rgb(154.43661971830986,129.29577464788733,100.56338028169014)" } diff --git a/public/coins/germany/847.json b/public/coins/germany/847.json index 330e07f..1a6bdfa 100644 --- a/public/coins/germany/847.json +++ b/public/coins/germany/847.json @@ -45,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/1888-original.jpg", + "picture": "/photos/allemagne/1888-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1888-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Richard M. Werner" - ], + "engravers": ["Richard M. Werner"], "description": "Face value surrounded with the country name (German Federal Republic) ; mintmark below.", "lettering": "BUNDESREPUBLIK DEUTSCHLAND\r\n50 · PFENNIG ·\r\nD", "lettering_scripts": [ @@ -61,7 +59,7 @@ } ], "lettering_translation": "Federal Republic of Germany", - "picture": "https://en.numista.com/catalogue/photos/allemagne/1889-original.jpg", + "picture": "/photos/allemagne/1889-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1889-180.jpg", "picture_copyright": "nalaberong" }, @@ -79,10 +77,7 @@ "maxYear": 1950 } ], - "tags": [ - "Allegory", - "Tree" - ], + "tags": ["Allegory", "Tree"], "references": [ { "catalogue": { @@ -112,7 +107,7 @@ "orientation": "medal", "edge": { "description": "Reeded (1950-1971)\r\nSmooth (1972-2001)", - "picture": "https://en.numista.com/catalogue/photos/allemagne/1462-original.jpg", + "picture": "/photos/allemagne/1462-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1462-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -139,5 +134,6 @@ "id": "4", "name": "Hamburgische Münze" } - ] + ], + "color": "rgb(134.64000000000001,124.43999999999998,120.36)" } diff --git a/public/coins/germany/850.json b/public/coins/germany/850.json index c7f10ac..d0e51c7 100644 --- a/public/coins/germany/850.json +++ b/public/coins/germany/850.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Adolf Jäger" - ], + "engravers": ["Adolf Jäger"], "description": "An oak seedling above the date", "lettering": "BUNDESREPUBLIK DEUTSCHLAND\r\n1989", "lettering_scripts": [ @@ -49,16 +47,14 @@ } ], "lettering_translation": "Federal Republic of Germany", - "picture": "https://en.numista.com/catalogue/photos/allemagne/234-original.jpg", + "picture": "/photos/allemagne/234-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/234-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Adolf Jäger" - ], + "engravers": ["Adolf Jäger"], "description": "The mintmark in between two rye ears above the denomination", "lettering": "F\r\n10\r\nPFENNIG", "lettering_scripts": [ @@ -66,7 +62,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/235-original.jpg", + "picture": "/photos/allemagne/235-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/235-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -115,7 +111,7 @@ "orientation": "medal", "edge": { "description": "Smooth with the brass plating partly stretched over a steel core", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2042-original.jpg", + "picture": "/photos/allemagne/2042-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2042-180.jpg", "picture_copyright": "Cyrillius" }, @@ -140,5 +136,6 @@ "id": "4", "name": "Hamburgische Münze" } - ] + ], + "color": "rgb(158,129,72)" } diff --git a/public/coins/germany/854.json b/public/coins/germany/854.json index 14a8862..d5f6bd0 100644 --- a/public/coins/germany/854.json +++ b/public/coins/germany/854.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Adolf Jäger" - ], + "engravers": ["Adolf Jäger"], "description": "An oak seedling above the date, circular legend around.", "lettering": "BUNDESREPUBLIK DEUTSCHLAND\r\n·1950·", "lettering_scripts": [ @@ -49,7 +47,7 @@ } ], "lettering_translation": "Federal Republic of Germany", - "picture": "https://en.numista.com/catalogue/photos/allemagne/1752-original.jpg", + "picture": "/photos/allemagne/1752-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1752-180.jpg", "picture_copyright": "Idolenz", "picture_license_name": "CC BY-NC", @@ -63,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/allemagne/1757-original.jpg", + "picture": "/photos/allemagne/1757-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/1757-180.jpg", "picture_copyright": "Idolenz", "picture_license_name": "CC BY-NC", @@ -112,7 +110,7 @@ "orientation": "variable", "edge": { "description": "Smooth with copper plating partly stretched over a steel core.", - "picture": "https://en.numista.com/catalogue/photos/allemagne/2038-original.jpg", + "picture": "/photos/allemagne/2038-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/allemagne/2038-180.jpg", "picture_copyright": "Cyrillius" }, @@ -137,5 +135,6 @@ "id": "4", "name": "Hamburgische Münze" } - ] + ], + "color": "rgb(209,152,108)" } diff --git a/public/coins/grece/118.json b/public/coins/grece/118.json index 7733a1d..e3f944c 100644 --- a/public/coins/grece/118.json +++ b/public/coins/grece/118.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Nikos Nikolaou", - "Georgios Stamatopoulos" - ], + "engravers": ["Nikos Nikolaou", "Georgios Stamatopoulos"], "description": "A portrait of Eleftherios Venizelos (1864-1936), one of Greece’s most prominent political figures, accompanied by a legend indicating his name \"Ελ. Βενιζέλος\", the value, and the 12 stars of Europe around the rim", "lettering": "50 ΛΕΠΤΑ \r\n2005\r\nΕλ. Βενιζέλος \r\nΓΣ", "lettering_scripts": [ @@ -49,16 +46,14 @@ } ], "lettering_translation": "50 Cents\r\n2005\r\nEl. Venizelos\r\nGS", - "picture": "https://en.numista.com/catalogue/photos/grece/605d7310dfec66.91115567-original.jpg", + "picture": "/photos/grece/605d7310dfec66.91115567-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/605d7310dfec66.91115567-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union.", "lettering": "50\r\nLL \r\nEURO \r\nCENT", "lettering_scripts": [ @@ -66,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/grece/605d731176ff38.14105518-original.jpg", + "picture": "/photos/grece/605d731176ff38.14105518-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/605d731176ff38.14105518-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -86,11 +81,7 @@ "maxYear": 2023 } ], - "tags": [ - "Map", - "Mustache", - "Politician" - ], + "tags": ["Map", "Mustache", "Politician"], "references": [ { "catalogue": { @@ -113,7 +104,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/grece/1279-original.jpg", + "picture": "/photos/grece/1279-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1279-180.jpg", "picture_copyright": "Cyrillius" }, @@ -131,5 +122,6 @@ "name": "Monnaie de Paris" } ], - "count": 1 + "count": 1, + "color": "rgb(193,173,121)" } diff --git a/public/coins/greece/115.json b/public/coins/greece/115.json index 15ba11a..186c6d6 100644 --- a/public/coins/greece/115.json +++ b/public/coins/greece/115.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Maria Andonatou", - "Georgios Stamatopoulos" - ], + "engravers": ["Maria Andonatou", "Georgios Stamatopoulos"], "description": "A modern commercial boat, a sea-going tanker, reflecting the innovative spirit of Greek shipping accompanied with the face value and encircled by the twelve stars of Europe.", "lettering": "5 ΛΕΠΤΑ\r\n2002 \r\nΓΣ", "lettering_scripts": [ @@ -49,16 +46,14 @@ } ], "lettering_translation": "5 Cents\r\n2002\r\nGS", - "picture": "https://en.numista.com/catalogue/photos/grece/626ea6cd5db9f1.93867710-original.jpg", + "picture": "/photos/grece/626ea6cd5db9f1.93867710-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/626ea6cd5db9f1.93867710-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -66,18 +61,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/grece/626ea6ce7ef417.14891651-original.jpg", + "picture": "/photos/grece/626ea6ce7ef417.14891651-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/626ea6ce7ef417.14891651-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "\"\"
\r\n
\r\nThe coin is issued in bankrolls and the above mint sets:
\r\n
\r\n2002 Official Issue Hellenic Coin Set: The Official Blister 2002 was issued on 31 October 2002 with a mintage of 50,000 pieces. It contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros. Greek euro coins feature a unique design for every one of the eight coins and they were all designed by Georgios Stamatopoulos.
\r\n\"\"
\r\n
\r\n2002 Official Issue Hellenic Coin Set produced by the Duch Mint: The Dutch version of the Greek Blister 2002 was issued in 2002 with a mintage of only 5,000 pieces. The only visible difference between the Greek and the Dutch version of the blister is the issuing authority, namely the Greek ministry of Economy and the Greek Ministry of Economics and Finance respectively.
\r\n\"\"
\r\n
\r\n2003 Official Issue Hellenic Coin Set: The Official Blister 2003 was issued in June 2003. It contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros. Greek euro coins feature a unique design for every one of the eight coins and they were all designed by Georgios Stamatopoulos.
\r\n\"\"
\r\n
\r\n2004 Official Issue Hellenic Coin Set: The Official 2004 Blister is dedicated to the "Epikourios Apollo’s temple” and it was issued in May 2005 with a mintage of 30,000 pieces. It contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros (BU). Bassae (Latin) or Bassai (meaning "little vale in the rocks") hosts the temple of Apollo Epikourios ("Apollo the helper"). It was designed by Iktinos, the architect of the Temple of Hephaestus and the Parthenon and the ancient writer Pausanias praises the temple as eclipsing all others but the temple of Athena at Tegea by the beauty of its stone and the harmony of its construction.
\r\n\"\"
\r\n
\r\n2005 Official Issue Hellenic Coin Set: The Official Blister 2005 is dedicated to the "Ancient coins of Athens”. It was issued on 11 January 2006 with a mintage of 25,000 pieces. The blister contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros. Greek euro coins feature a unique design for every one of the eight coins and they were all designed by Georgios Stamatopoulos. The minor coins depict Greek ships, the middle coins portray famous Greeks and the two large denominations showing images of Greek history and mythology.
\r\n\"\"
\r\n
\r\n2006 Official Issue Hellenic Coin Set: The Official Blister 2006 is dedicated to the "Ancient Greek coins". It was issued on 11 January 2006 with a mintage of 25,000 pieces. The blister contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros. Greek euro coins feature a unique design for every one of the eight coins and they were all designed by Georgios Stamatopoulos. The minor coins depict Greek ships, the middle coins portray famous Greeks and the two large denominations showing images of Greek history and mythology.
\r\n\"\"
\r\n
\r\n2007 Official Issue Hellenic Coin Set: The Official Blister 2007 is dedicated to the "Ancient coins of the Aegean Sea”. It was issued on 13 August 2007 with a mintage of 15,000 pieces. The blister contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros. Greek euro coins feature a unique design for every one of the eight coins and they were all designed by Georgios Stamatopoulos. The minor coins depict Greek ships. The middle coins portray famous Greeks. The two large denominations show images of Greek history and mythology. All designs feature the 12 stars of the EU, the year of imprint and a tiny symbol of the Bank of Greece (the anthemion flower).
\r\n\"\"
\r\n
\r\n2008 Official Issue Hellenic Coin Set: The Official Blister 2008 is dedicated to the "Ancient coins of Thrace, Macedonia, Thessaly, Epirus and Peloponnese”. It was issued on 4 October 2008 with a mintage of 20,000 pieces. The blister contains the 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros.
\r\n\"\"
\r\n
\r\n2009 Official Issue Hellenic Coin Set: The Official Blister 2009 is dedicated to the "Theran Ship", a typical Cycladic ship from the 17th century BC. The construction model was based on the Miniature Ships Fresco, depicting a fleet in procession, discovered in the West House of the prehistoric settlement of Akritiri, on the island of Thera. The "Theran Ship" blister was issued on 7 December 2009 with a mintage of 7,500 pieces. It contains the 1, 2, 5, 10, 20, 50 cent and 1, 2 euros coins.
\r\n\"\"
\r\n
\r\n2010 Official Issue Hellenic Coin Set: The Official Blister 2010 is dedicated to the "Athenian Triere" (or trireme), the largest battleship for 200 years dating from the time of the Athenian democracy and Kimon (5th-century b.C.- Marine Museum). Triremes were the dominant warship in the Mediterranean from around 700 to 300 BC when naval combat took place mainly by ramming enemy vessels which would typically break apart from the force of the collision. The "Athenian Trireme” blister was issued in November 2010 and contains the 1, 2, 5, 10, 20, 50 cent and 1, 2 euros coins.
\r\n\"\"
\r\n
\r\n2011 Official Issue Hellenic Coin Set: This Special Olympics Blister 2011 commemorates the XIII Special Olympics World Summer Games and contains the following coins: 1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros. Greek euro coins feature a unique design for every one of the eight coins and they were all designed by Georgios Stamatopoulos. The minor coins depict Greek ships (Athenian triere - Corvette - Modern tanker ship), the middle coins portray famous Greeks (Rigas-Fereos Velestinlis - Ioannis Kapodistrias - Eleytherios Venizelos) and the two large denominations show images of Greek history and mythology (Owl - Europa abducted by Zeus).
\r\n\"\"
\r\n
\r\n2012 Official Issue Hellenic Coin Set: The official 2012 blister of the Hellenic Republic is dedicated to “Santorini” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). The Cycladic island of Santorini, also known by its ancient name of Thera, is one of the top tourist destinations in the world, thanks to its unique volcanic landscape dominated by the impressive Caldera, as shaped by a volcanic eruption in the Bronze Age. The island was an important centre of Cycladic civilisation, one of the earliest civilisations in Europe, as can be seen from the remarkably well-preserved remains uncovered at the prehistoric site of Akrotiri. Santorini also enchants its visitors with its traditional villages and vernacular architecture, as well as with its renowned wines and other products.
\r\n\"\"
\r\n
\r\n2012 Official Issue Hellenic Proof Coin Set: The 2012 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros), as well as the 2 Euro commemorative coin for the Ten Years of Euro Cash.
\r\n\"\"
\r\n
\r\n2013 Official Issue Hellenic Coin Set: The official 2013 blister of the Hellenic Republic is dedicated to “Mykonos and Delos” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). One of the first Greek islands to embrace tourism, Mykonos was a choice destination for visitors in ever-increasing numbers as early as the 1960s. Today, Mykonos is Greece’s most cosmopolitan island and receives visitors year-round. With its austere, barren and rocky terrain and its well preserved vernacular architecture, the “island of the winds”, as it is known, is perhaps the most typical Cycladic landscape. A few miles from Mykonos lies the tiny island of Delos, sacred in antiquity for being the birthplace of Apollo and Artemis and listed as a UNESCO World Heritage Site since 1990. Uninhabited today and unmarred by any modern construction, Delos preserves much of its sanctity as an archaeological site that boasts numerous classical, Hellenistic and Roman antiquities.
\r\n\"\"
\r\n
\r\n2013 Official Issue Hellenic Proof Coin Set: The 2013 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros), as well as two 2 euro commemorative coins celebrating the Union of Crete with Greece and the Founding of the Platonic Academy.
\r\n\"\"
\r\n
\r\n2014 Official Issue Hellenic Coin Set: The official 2014 blister of the Hellenic Republic is dedicated to “Thrace”, a north-east region of the country. It includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). Thrace, the north-easternmost region of Greece, comprises the Prefectures of Xanthi, Rodopi and Evros. The region is bounded by the rivers Nestos and Evros, by the Rodopi mountain range to the North and by the Thracian Sea to the South, and has a major seaport, Alexandroupolis. Blessed with stunningly diverse and pristine nature, Thrace boasts internationally significant wetlands (e.g. the Evros Delta), lakes (e.g. Vistonis), national parks (e.g. Rodopi and Dadia) and the fascinating island of Samothrace, all increasingly popular tourist destinations. Traditionally one of the breadbaskets of Greece, Thrace is now looking for new ways to tap its huge growth potential. Thrace has also had an important and continuous presence in national and world culture, ranging from Democritus and Protagoras to a rich musical heritage, consistent with Thrace’s renown as the “land of Orpheus”, and the Xanthi Old Town Festival. Finally, the harmonious coexistence of Christians and Muslims gives Thrace’s towns and villages a unique feel, while also fostering understanding and cooperation between cultures and peoples.
\r\n\"\"
\r\n
\r\n2014 Official Issue Hellenic Proof Coin Set: The 2014 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros), as well as two 2 euro commemorative coins celebrating the 400th Anniversary of the Death of Domenikos Theotokopoulos and the 150th Anniversary of the Union of the Ionian Islands with Greece.
\r\n\"\"
\r\n
\r\n2015 Official Issue Hellenic Coin Set: The official 2015 blister of the Hellenic Republic is dedicated to “Epirus” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). Epirus, the north-westernmost region of Greece, is flanked to the west by the Ionian Sea and the east by the Pindos mountain range. For the ancient Greeks, Epirus had great religious importance on account of the Dodona Oracle. Milestones in the region’s later history include the Hellenistic kingdom of Pyrrhus and the late-Byzantine Despotate of Epirus, while during Ottoman rule Epirus was associated with the Greek struggle for freedom, with sites of heroic self-sacrifice at Koungi and Zalongo. After Greek independence, several Epirote benefactors (Arsakis, Tositsas, Zappas, Sinas, Averof) contributed generously to the construction of the newly founded Greek state, which Epirus became part of in two phases (the Arta district was ceded to Greece in 1881 and the rest of Epirus after the Balkan Wars of 1912-13). It was in the Epirus highlands that the Greek army waged its epic battles against the Italian invader in 1940-41. Today Epirus attracts visitors for its stunning natural scenery (Vikos gorge), seaside resorts (Parga, Syvota), traditional settlements (Ioannina, Metsovo, Zagorochoria) and rich folk tradition in music, silver and gold craftsmanship and stone masonry.
\r\n\"\"
\r\n
\r\n2015 Official Issue Hellenic Proof Coin Set: The 2015 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros).
\r\n\"\"
\r\n
\r\n2016 Official Issue Hellenic Coin Set: The official 2016 blister of the Hellenic Republic is dedicated to “Peloponnese” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). The Peloponnese or Peloponnesus is a peninsula and geographic region in southern Greece. It is separated from the central part of the country by the Gulf of Corinth. It was here that the Greek War of Independence began in 1821. In 2016, Lonely Planet voted the Peloponnese the top spot of their Best in Europe list. The peninsula has been inhabited since prehistoric times. The Mycenaean civilization dominated the Peloponnese in the Bronze Age from its stronghold at Mycenae in the north-east of the peninsula. In 776 BC, the first Olympic Games were held at Olympia, and this date is sometimes used to denote the beginning of the classical period of Greek antiquity. During the Roman period, the peninsula remained prosperous but became a provincial backwater, relatively cut off from the affairs of the wider Roman world.
\r\n\"\"
\r\n
\r\n2016 Official Issue Hellenic Proof Coin Set: The 2016 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros.
\r\n\"\"
\r\n
\r\n2017 Official Issue Hellenic Coin Set: The official 2017 blister of the Hellenic Republic is dedicated to “Crete” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). Crete is the largest island of Greece and the cradle of Minoan civilisation. According to mythology, the is also the birthplace of Zeus. Crete is strategically situated at the juncture of three continents and came under the rule of several conquerors (Romans, Arabs, Venetians and, last, Ottomans), before finally uniting with Greece in 1913. Crete’s tumultuous history has forged the indomitable Cretan spirit, while centuries of fruitful cultural exchanges have left their mark on countless monuments, as well as on folk and scholarly traditions that admirably fuse East and West. The proverbial Cretan hospitality, exquisite local produce, mild climate, and beauty and diversity of the natural landscape all make Crete one of Greece’s top tourist destinations.
\r\n\"\"
\r\n
\r\n2017 Official Issue Hellenic Proof Coin Set: The 2017 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros.
\r\n\"\"
\r\n
\r\n2018 Official Issue Hellenic Coin Set: The official 2018 blister of the Hellenic Republic is dedicated to “Rhodos” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). The largest island of the Dodecanese and the fourth largest of Greece, Rhodes was the island of the god Helios, whose statue, the famous Colossus, standing at the harbour entrance, was one of the Seven Wonders of the Ancient World. Rhodes flourished in Hellenistic times, becoming a major trading city. From 1309, Rhodes was the seat of the Order of the Knights Hospitaller. The medieval city which they built, with the Castle of the Knights and the Palace of the Grand Master, was declared a UNESCO world heritage site in 1988. The island was conquered by the Ottomans in 1523 and by the Italians in 1912. It remained under Italian rule until the unification of the Dodecanese with Greece in 1948. Today, one of Greece’s most popular island destinations, Rhodes enchants its visitors with its exquisite beaches, idyllic landscapes and important ancient and medieval monuments.
\r\n\"\"
\r\n
\r\n2018 Official Issue Hellenic Proof Coin Set: The 2018 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros, as well as two 2 euro commemorative coins celebrating the 75th Anniversary of the Death of Kostis Palamas and the 150th Anniversary of the Union of the Dodecanese With Greece.
\r\n\"\"
\r\n
\r\n2019 Official Issue Hellenic Coin Set: The official 2018 blister of the Hellenic Republic is dedicated to “Samos” and includes all 8 euro coins (1, 2, 5, 10, 20, 50 cents and 1, 2 euros). The island of Samos in the Eastern Aegean is the renowned birthplace of Pythagoras the mathematician, Aristarchos the astronomer and Epikouros the philosopher. It flourished in antiquity, especially under the tyrant Polycrates, and was also famous for its wines. Samos was home to one of the most important ancient Greek sanctuaries, the Heraion. Another UNESCO listed site, the Eupalinian Aqueduct, ran 1,036 metres through the mountainside to bring water to the ancient city of Samos. In the late Byzantine period, Samos came under Genovese rule, before eventually falling to the Ottomans. In 1835, it was given semi-autonomous status under Ottoman suzerainty and was united with Greece in 1912. Today, the island continues to produce its prized wines and is popular among tourists for its lush forests, important archaeological sites, picturesque villages and stunning beaches.
\r\n\"\"
\r\n
\r\n2019 Official Issue Hellenic Proof Coin Set: The 2019 official set of the Hellenic Republic in Proof quality, contains a complete set of the Greek euro coins (1, 2, 5, 10, 20, 50 cent coins and 1, 2 euros, as well as two 2 euro commemorative coins celebrating the 150 years in memoriam of A. Kalvos and the 100th Anniversary of the birth of M. Andronicos.
\r\n\"\"", - "tags": [ - "Map", - "Boat or watercraft", - "Globe" - ], + "tags": ["Map", "Boat or watercraft", "Globe"], "references": [ { "catalogue": { @@ -100,7 +91,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/grece/1282-original.jpg", + "picture": "/photos/grece/1282-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1282-180.jpg", "picture_copyright": "Cyrillius" }, @@ -118,5 +109,6 @@ "name": "Monnaie de Paris" } ], - "count": 1 + "count": 1, + "color": "rgb(172,108,52)" } diff --git a/public/coins/greece/116.json b/public/coins/greece/116.json index bea588e..0445958 100644 --- a/public/coins/greece/116.json +++ b/public/coins/greece/116.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Perikles Sotiriou", - "Georgios Stamatopoulos" - ], + "engravers": ["Perikles Sotiriou", "Georgios Stamatopoulos"], "description": "A portrait of Rigas Fereos (1757-1798), a forerunner and leading figure of the Greek enlightenment and confederation, is accompanied with a legend indicating his name \"Ρήγας Φεραίος\" and the face value and is encircled by the twelve stars of Europe.", "lettering": "10 \r\nΛΕΠΤΑ\r\n2002\r\nΡΗΓΑΣ ΦΕΡΑΙΟΣ\r\nΓΣ", "lettering_scripts": [ @@ -49,15 +46,13 @@ } ], "lettering_translation": "10\r\nCENTS\r\n2002\r\nRIGAS FEREOS", - "picture": "https://en.numista.com/catalogue/photos/grece/1824-original.jpg", + "picture": "/photos/grece/1824-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1824-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union.", "lettering": "10 \r\nLL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -65,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/grece/1825-original.jpg", + "picture": "/photos/grece/1825-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1825-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" @@ -84,9 +79,7 @@ "maxYear": 2023 } ], - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -109,7 +102,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/grece/1617-original.jpg", + "picture": "/photos/grece/1617-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1617-180.jpg", "picture_copyright": "Cyrillius" }, @@ -123,5 +116,6 @@ "name": "Monnaie de Paris" } ], - "count": 1 + "count": 1, + "color": "rgb(205,148,32)" } diff --git a/public/coins/greece/6350.json b/public/coins/greece/6350.json index afeea9d..eb235f6 100644 --- a/public/coins/greece/6350.json +++ b/public/coins/greece/6350.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Maria Andonatou", - "Geórgios Stamatópoulos" - ], + "engravers": ["Maria Andonatou", "Geórgios Stamatópoulos"], "description": "A portrait of Ioannis Capodistrias (1776-1831), a leading national and European politician and diplomat who became the first Governor of Greece (1830-31) following the Greek War of Independence (1821-27), is accompanied with a legend indicating his name \"Ι. Καποδίστριας\" and the face value and is encircled by the twelve stars of Europe", "lettering": "20\r\n2008 ΛΕΠΤΑ\r\nΙ. ΚΑΠΟΔΙΣΤΡΙΑΣ\r\nΓΣ", "lettering_scripts": [ @@ -49,14 +46,12 @@ } ], "lettering_translation": "20\r\n2008 Cents\r\nI. Kapodistrias\r\nGS", - "picture": "https://en.numista.com/catalogue/photos/grece/1818-original.jpg", + "picture": "/photos/grece/1818-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1818-180.jpg", "picture_copyright": "gef" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -64,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/grece/1819-original.jpg", + "picture": "/photos/grece/1819-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1819-180.jpg", "picture_copyright": "gef" }, @@ -82,10 +77,7 @@ "maxYear": 2006 } ], - "tags": [ - "Map", - "Politician" - ], + "tags": ["Map", "Politician"], "references": [ { "catalogue": { @@ -108,7 +100,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/grece/1618-original.jpg", + "picture": "/photos/grece/1618-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/grece/1618-180.jpg", "picture_copyright": "Cyrillius" }, @@ -118,5 +110,6 @@ "name": "The National Mint of the Bank of Greece" } ], - "count": 1 + "count": 1, + "color": "rgb(176,154,84)" } diff --git a/public/coins/hungary/1998.json b/public/coins/hungary/1998.json index 2e04d86..8e05e1e 100644 --- a/public/coins/hungary/1998.json +++ b/public/coins/hungary/1998.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "István Kósa", - "István Bartos" - ], + "engravers": ["István Kósa", "István Bartos"], "description": "Crane bird or Great White Egret (Ardea alba) and the date below.", "lettering": "MAGYAR KÖZTÁRSASÁG · 2009 ·", "lettering_scripts": [ @@ -49,17 +46,14 @@ } ], "lettering_translation": "Republic of Hungary", - "picture": "https://en.numista.com/catalogue/photos/hongrie/62dbe423c20a76.19689970-original.jpg", + "picture": "/photos/hongrie/62dbe423c20a76.19689970-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/hongrie/62dbe423c20a76.19689970-180.jpg", "picture_copyright": "Máté Bikfalvi", "picture_license_name": "CC0", "picture_license_url": "https://creativecommons.org/publicdomain/zero/1.0/deed.en" }, "reverse": { - "engravers": [ - "István Kósa", - "István Bartos" - ], + "engravers": ["István Kósa", "István Bartos"], "description": "The denomination with the mintmark below.", "lettering": "5\r\nFORINT\r\nBP.", "lettering_scripts": [ @@ -67,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/hongrie/62dbe4246e4d26.71759969-original.jpg", + "picture": "/photos/hongrie/62dbe4246e4d26.71759969-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/hongrie/62dbe4246e4d26.71759969-180.jpg", "picture_copyright": "Máté Bikfalvi", "picture_license_name": "CC0", @@ -152,9 +146,7 @@ "maxYear": 2021 } ], - "tags": [ - "Bird" - ], + "tags": ["Bird"], "references": [ { "catalogue": { @@ -184,7 +176,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/hongrie/4173-original.jpg", + "picture": "/photos/hongrie/4173-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/hongrie/4173-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", @@ -195,5 +187,6 @@ "id": "1248", "name": "Hungarian mint" } - ] + ], + "color": "rgb(129,108,52)" } diff --git a/public/coins/ireland/121.json b/public/coins/ireland/121.json index 5dfac13..226cb6a 100644 --- a/public/coins/ireland/121.json +++ b/public/coins/ireland/121.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jarlath Hayes" - ], + "engravers": ["Jarlath Hayes"], "description": "The Celtic harp, a traditional symbol of Ireland, is accompanied by the inscription \"éire\" and twelve five-pointed stars surrounding around the rim representing the European Union", "lettering": "éire 2002", "lettering_scripts": [ @@ -48,15 +46,13 @@ } ], "lettering_translation": "Ireland", - "picture": "https://en.numista.com/catalogue/photos/irlande/977-original.jpg", + "picture": "/photos/irlande/977-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/977-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "designers": [ - "Luc Luycx" - ], + "designers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -64,15 +60,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/irlande/978-original.jpg", + "picture": "/photos/irlande/978-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/978-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "comments": "Although still legal tender, these coins are no longer issued for circulation as of 2015. Cash transactions are now rounded to the nearest 5 Cents.
\r\n
\r\nThere is a variation in 2008 Reverse where the N and the T are joined in the upper part of the letters as seen in the image below:
\r\n\"\"", - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -95,7 +89,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/irlande/852-original.jpg", + "picture": "/photos/irlande/852-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/852-180.jpg", "picture_copyright": "Cyrillius" }, @@ -125,5 +119,6 @@ "name": "Royal Mint" } ], - "count": 20 + "count": 20, + "color": "rgb(236,164,87)" } diff --git a/public/coins/ireland/125.json b/public/coins/ireland/125.json index 8316364..6a79dbc 100644 --- a/public/coins/ireland/125.json +++ b/public/coins/ireland/125.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jarlath Hayes" - ], + "engravers": ["Jarlath Hayes"], "description": "The Celtic harp, a traditional symbol of Ireland, with the country name to the left, the date to the right, and the 12 stars of Europe around the rim", "lettering": "éIRe 2004", "lettering_scripts": [ @@ -48,15 +46,13 @@ } ], "lettering_translation": "Ireland", - "picture": "https://en.numista.com/catalogue/photos/irlande/985-original.jpg", + "picture": "/photos/irlande/985-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/985-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/irlande/986-original.jpg", + "picture": "/photos/irlande/986-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/986-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" @@ -82,9 +78,7 @@ "maxYear": 2023 } ], - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -107,7 +101,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/irlande/1029-original.jpg", + "picture": "/photos/irlande/1029-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/1029-180.jpg", "picture_copyright": "Cyrillius" }, @@ -117,5 +111,6 @@ "name": "Irish Mint" } ], - "count": 1 + "count": 1, + "color": "rgb(198,147,64)" } diff --git a/public/coins/ireland/6329.json b/public/coins/ireland/6329.json index 89e4a84..fb77013 100644 --- a/public/coins/ireland/6329.json +++ b/public/coins/ireland/6329.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jarlath Hayes" - ], + "engravers": ["Jarlath Hayes"], "description": "The Celtic harp, a traditional symbol of Ireland, with the country name to the left, the date to the right, and the 12 stars of Europe around the rim", "lettering": "éire 2007", "lettering_scripts": [ @@ -48,15 +46,13 @@ } ], "lettering_translation": "Ireland 2007", - "picture": "https://en.numista.com/catalogue/photos/irlande/1054-original.jpg", + "picture": "/photos/irlande/1054-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/1054-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/irlande/1055-original.jpg", + "picture": "/photos/irlande/1055-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/1055-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" @@ -82,9 +78,7 @@ "maxYear": 2006 } ], - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -107,7 +101,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/irlande/1026-original.jpg", + "picture": "/photos/irlande/1026-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/irlande/1026-180.jpg", "picture_copyright": "Cyrillius" }, @@ -137,5 +131,6 @@ "name": "Royal Mint" } ], - "count": 1 + "count": 1, + "color": "rgb(207,162,66)" } diff --git a/public/coins/italy/129.json b/public/coins/italy/129.json index be83644..12ec90d 100644 --- a/public/coins/italy/129.json +++ b/public/coins/italy/129.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Eugenio Driutti" - ], + "engravers": ["Eugenio Driutti"], "description": "The Castel del Monte, a 13th-century castle situated in the Apulia region of southeast Italy with the mintmark, the monogram RI of the Italian Republic, and the initial of the author below and the twelve five-pointed stars representing the European Union around the rim", "lettering": "2012\r\nED RI R", "lettering_scripts": [ @@ -48,16 +46,14 @@ } ], "unabridged_legend": "Repubblica Italiana", - "picture": "https://en.numista.com/catalogue/photos/italie/61fccce824b820.92416870-original.jpg", + "picture": "/photos/italie/61fccce824b820.92416870-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61fccce824b820.92416870-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia.", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -65,17 +61,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/italie/61fccce8c39305.18290716-original.jpg", + "picture": "/photos/italie/61fccce8c39305.18290716-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61fccce8c39305.18290716-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "Although still legal tender, these coins are no longer issued for circulation as of 2018. Cash transactions are now rounded to the nearest 5 Cents.
\r\n
\r\nThere are small differences between 2016 and 2017.
\r\n\"\"", - "tags": [ - "Castle or fortification", - "Map" - ], + "tags": ["Castle or fortification", "Map"], "references": [ { "catalogue": { @@ -98,7 +91,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/italie/2318-original.jpg", + "picture": "/photos/italie/2318-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/2318-180.jpg", "picture_copyright": "Cyrillius" }, @@ -108,5 +101,6 @@ "name": "Istituto Poligrafico e Zecca dello Stato" } ], - "count": 4 + "count": 4, + "color": "rgb(149,78,36)" } diff --git a/public/coins/italy/131.json b/public/coins/italy/131.json index d925ba9..84de019 100644 --- a/public/coins/italy/131.json +++ b/public/coins/italy/131.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ettore Lorenzo Frapiccini" - ], + "engravers": ["Ettore Lorenzo Frapiccini"], "description": "The Flavius amphitheatre, which Emperor Vespasian began building around 75 AD and Emperor Titus inaugurated in 80 AD, is encircled by the twelve stars of Europe", "lettering": "R\r\nRI\r\nELF\r\n2009", "lettering_scripts": [ @@ -47,16 +45,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/italie/61ff724b0bc689.51779243-original.jpg", + "picture": "/photos/italie/61ff724b0bc689.51779243-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61ff724b0bc689.51779243-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "EURO\r\nCENT\r\n5 LL", "lettering_scripts": [ @@ -64,17 +60,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/italie/61ff724c3a0db7.02698926-original.jpg", + "picture": "/photos/italie/61ff724c3a0db7.02698926-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61ff724c3a0db7.02698926-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "\"\"
\r\n
\r\n\"\"
\r\nThe differences between 2002 and 2017", - "tags": [ - "Other building", - "Map" - ], + "tags": ["Other building", "Map"], "references": [ { "catalogue": { @@ -97,7 +90,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/italie/2319-original.jpg", + "picture": "/photos/italie/2319-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/2319-180.jpg", "picture_copyright": "Cyrillius" }, @@ -107,5 +100,6 @@ "name": "Istituto Poligrafico e Zecca dello Stato" } ], - "count": 1 + "count": 1, + "color": "rgb(180,132,76)" } diff --git a/public/coins/italy/132.json b/public/coins/italy/132.json index 30b53b6..477d3ab 100644 --- a/public/coins/italy/132.json +++ b/public/coins/italy/132.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Claudia Momoni" - ], + "engravers": ["Claudia Momoni"], "description": "A detail of the \"Birth of Venus\", a tableau painted by Sandro Botticelli circa 1485, is encircled by the twelve stars of Europe. On the left the date and the monogram of Italian Republic. The mint mark is at right, between the hair and the neck. Author's initials are below Venus, on the left.", "lettering": "2002\r\nRI\r\nR\r\nCM", "lettering_scripts": [ @@ -48,15 +46,13 @@ } ], "lettering_translation": "RI = Italian Republic", - "picture": "https://en.numista.com/catalogue/photos/italie/61da9cf088f3e0.94383691-original.jpg", + "picture": "/photos/italie/61da9cf088f3e0.94383691-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61da9cf088f3e0.94383691-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "On the left, next to the face value, a map of the Europe with the twelve vertical stars symbolizes the gathering of the nations of the European Union. The map is not geographical since there is space between the borders of each nations of the Europe", "lettering": "10 LL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/italie/61da9cf0d92735.09580640-original.jpg", + "picture": "/photos/italie/61da9cf0d92735.09580640-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61da9cf0d92735.09580640-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" @@ -83,9 +79,7 @@ "maxYear": 2023 } ], - "tags": [ - "Painting" - ], + "tags": ["Painting"], "references": [ { "catalogue": { @@ -108,7 +102,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/italie/2580-original.jpg", + "picture": "/photos/italie/2580-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/2580-180.jpg", "picture_copyright": "Cyrillius" }, @@ -118,5 +112,6 @@ "name": "Istituto Poligrafico e Zecca dello Stato" } ], - "count": 2 + "count": 2, + "color": "rgb(199,171,56)" } diff --git a/public/coins/italy/133.json b/public/coins/italy/133.json index 40770c0..504c3a1 100644 --- a/public/coins/italy/133.json +++ b/public/coins/italy/133.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Maria Angela Cassol" - ], + "engravers": ["Maria Angela Cassol"], "description": "Boccioni's sculpture \"Unique Forms in the Continuity of Space\", encircled by the twelve stars of Europe. On the left the monogram of Italian Republic. The mint mark and the date are at right. Author's initials are below the sculpture.", "lettering": "R\r\nRI 2002\r\nM.A.C.", "lettering_scripts": [ @@ -49,15 +47,13 @@ ], "unabridged_legend": "Repubblica Italiana", "lettering_translation": "(RI) = Italian Republic", - "picture": "https://en.numista.com/catalogue/photos/italie/61da9d39654153.37336320-original.jpg", + "picture": "/photos/italie/61da9d39654153.37336320-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61da9d39654153.37336320-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "On the left, next to the face value, a map of the Europe with the twelve vertical stars symbolizes the gathering of the nations of the European Union. The map is not geographical since there is space between the borders of each nations of the Europe", "lettering": "20 \r\nLL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -65,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/italie/61da9d39d089a6.52440788-original.jpg", + "picture": "/photos/italie/61da9d39d089a6.52440788-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/61da9d39d089a6.52440788-180.jpg", "picture_copyright": "Ma collection de monnaies", "picture_copyright_url": "https://monnaiesetvarietes.numista.com/" @@ -84,10 +80,7 @@ "maxYear": 2023 } ], - "tags": [ - "Sculpture", - "Map" - ], + "tags": ["Sculpture", "Map"], "references": [ { "catalogue": { @@ -110,7 +103,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/italie/2582-original.jpg", + "picture": "/photos/italie/2582-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/italie/2582-180.jpg", "picture_copyright": "Cyrillius" }, @@ -120,5 +113,6 @@ "name": "Istituto Poligrafico e Zecca dello Stato" } ], - "count": 1 + "count": 1, + "color": "rgb(200,175,65)" } diff --git a/public/coins/japan/1589.json b/public/coins/japan/1589.json index 3bb89a3..64de0de 100644 --- a/public/coins/japan/1589.json +++ b/public/coins/japan/1589.json @@ -40,7 +40,7 @@ "description": "Cherry blossoms, authority above, value below", "lettering": "日 本 国\r\n百 円", "lettering_translation": "State of Japan\r\n100 yen", - "picture": "https://en.numista.com/catalogue/photos/japon/11-original.jpg", + "picture": "/photos/japon/11-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/japon/11-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -50,7 +50,7 @@ "description": "Large value in center, date below", "lettering": "100\r\n昭和47年", "lettering_translation": "100\r\nYear 47 of Shōwa", - "picture": "https://en.numista.com/catalogue/photos/japon/12-original.jpg", + "picture": "/photos/japon/12-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/japon/12-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -80,9 +80,7 @@ "maxYear": 2023 } ], - "tags": [ - "Flower" - ], + "tags": ["Flower"], "references": [ { "catalogue": { @@ -112,7 +110,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/japon/602a20502c8d55.93340745-original.jpg", + "picture": "/photos/japon/602a20502c8d55.93340745-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/japon/602a20502c8d55.93340745-180.jpg", "picture_copyright": "Griffin S", "picture_license_name": "CC BY-NC", @@ -123,5 +121,6 @@ "id": "41", "name": "Japan Mint" } - ] + ], + "color": "rgb(138.77551020408166,126.6326530612245,116.22448979591836)" } diff --git a/public/coins/lebanon/122665.json b/public/coins/lebanon/122665.json index 397aee9..dc27516 100644 --- a/public/coins/lebanon/122665.json +++ b/public/coins/lebanon/122665.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Bank of Lebanon\n250 Līrah\n2014", - "picture": "https://en.numista.com/catalogue/photos/liban/312-original.jpg", + "picture": "/photos/liban/312-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/liban/312-180.jpg", "picture_copyright": "Doc_man", "picture_license_name": "CC BY", @@ -60,7 +60,7 @@ } ], "lettering_translation": "250 Pounds\nBank of Lebanon", - "picture": "https://en.numista.com/catalogue/photos/liban/313-original.jpg", + "picture": "/photos/liban/313-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/liban/313-180.jpg", "picture_copyright": "Doc_man", "picture_license_name": "CC BY", @@ -91,9 +91,7 @@ "maxYear": 2012 } ], - "tags": [ - "Tree" - ], + "tags": ["Tree"], "references": [ { "catalogue": { @@ -126,5 +124,6 @@ "id": "232", "name": "Münze Österreich" } - ] + ], + "color": "rgb(196,160,99)" } diff --git a/public/coins/luxembourg/137.json b/public/coins/luxembourg/137.json index dc23d2c..14fd296 100644 --- a/public/coins/luxembourg/137.json +++ b/public/coins/luxembourg/137.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Yvette Gastauer-Claire" - ], + "engravers": ["Yvette Gastauer-Claire"], "description": "A portrait of His Royal Highness Grand Duke Henri is encircled by the inscription \"LËTZEBUERG\", and the twelve stars of Europe", "lettering": "LËTZEBUERG 2004 GC", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Luxembourg", - "picture": "https://en.numista.com/catalogue/photos/luxembourg/61fcd02c2b3328.28896904-original.jpg", + "picture": "/photos/luxembourg/61fcd02c2b3328.28896904-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/61fcd02c2b3328.28896904-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -69,17 +65,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/luxembourg/61fcd02d00ce32.31683315-original.jpg", + "picture": "/photos/luxembourg/61fcd02d00ce32.31683315-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/61fcd02d00ce32.31683315-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "This piece was engraved by several countries and by several engravers according to the following periods :
\r\n
  • 2002    Netherlands: caduceus - Mark: bow and star - W. J. van Schauwenburg (interim)
    \r\n
  • 2003 - 2004 Netherlands: caduceus - Mark: Sails - Maarten Brouwer (holder)
    \r\n
  • 2005 - 2006 Finland:  "S" and logo of Vanda mint
    \r\n
  • 2007 - 2008 France: horn of plenty and "F" in star - Mark: hunting horn - Hubert Lariviere
    \r\n
  • 2009 - 2015 Netherlands: caduceus - Mark: Sails - Maarten Brouwer (holder)  
    \r\n
  • 2016 - 2017 Netherlands: caduceus - Mark: Sails and star - Kees Bruinsma (interim)
    \r\n
  • 2018 (In sets only) Netherlands:  caduceus - Mark: Bridge - Stephan Satijn (holder)
    \r\n

\r\nSince 2018, Luxembourg using the lion mark.
\r\n2018 (normal): caduceus and lion
\r\n2018 (Proof): Lion and bridge - Stephan Satijn (holder)", - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -102,7 +95,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/luxembourg/1290-original.jpg", + "picture": "/photos/luxembourg/1290-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/1290-180.jpg", "picture_copyright": "Cyrillius" }, @@ -120,5 +113,6 @@ "name": "Mint of Finland" } ], - "count": 4 + "count": 4, + "color": "rgb(154,108,68)" } diff --git a/public/coins/luxembourg/139.json b/public/coins/luxembourg/139.json index 458f5d9..efec365 100644 --- a/public/coins/luxembourg/139.json +++ b/public/coins/luxembourg/139.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Yvette Gastauer-Claire" - ], + "engravers": ["Yvette Gastauer-Claire"], "description": "A portrait of His Royal Highness Grand Duke Henri is encircled by the country name and the 12 stars of Europe around the rim", "lettering": "LËTZEBUERG 2004 GC", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Luxembourg 2004 GC", - "picture": "https://en.numista.com/catalogue/photos/luxembourg/61fe0eebf20bd5.81872756-original.jpg", + "picture": "/photos/luxembourg/61fe0eebf20bd5.81872756-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/61fe0eebf20bd5.81872756-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -69,17 +65,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/luxembourg/61fe0eecddda17.09298112-original.jpg", + "picture": "/photos/luxembourg/61fe0eecddda17.09298112-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/61fe0eecddda17.09298112-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "This piece was engraved by severals contries and by severals engravers according to the following periods:
\r\n
  • 2002 Netherlands: caduceus - Mark : bow and star - W. J. van Schauwenburg (interim)
    \r\n
  • 2003 - 2004 Netherlands: caduceus - Mark : Sails - Maarten Brouwer (holder)
    \r\n
  • 2005 - 2006 Finland:  "S" and logo of Vanda mint
    \r\n
  • 2007 - 2008 France: horn of plenty and "F" in star - Mark : hunting horn - Hubert Lariviere
    \r\n
  • 2009 - 2015 Nederland : caduceus - Mark : Sails - Maarten Brouwer (holder)  
    \r\n
  • 2016 - 2017 Netherlands: caduceus - Mark : Sails and star - Kees Bruinsma (interim)
    \r\n
  • 2018 (In sets only) Netherlands: caduceus - Mark : Bridge - Stephan Satijn (holder)
    \r\n

\r\nSince 2018, Luxembourg using lion mark.
\r\n2018 (normal): caduceus  and lion
\r\n2018 (Proof): Lion and bridge - Stephan Satijn (holder)", - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -102,7 +95,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/luxembourg/1289-original.jpg", + "picture": "/photos/luxembourg/1289-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/1289-180.jpg", "picture_copyright": "Cyrillius" }, @@ -120,5 +113,6 @@ "name": "Mint of Finland" } ], - "count": 1 + "count": 1, + "color": "rgb(154,108,68)" } diff --git a/public/coins/luxembourg/6418.json b/public/coins/luxembourg/6418.json index 987f251..868e062 100644 --- a/public/coins/luxembourg/6418.json +++ b/public/coins/luxembourg/6418.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Yvette Gastauer-Claire" - ], + "engravers": ["Yvette Gastauer-Claire"], "description": "A geometrical portrait of His Royal Highness Grand Duke Henri is encircled by the country name, and the twelve stars of Europe around the rim", "lettering": "LËTZEBUERG\r\n2019\r\nGC F", "lettering_scripts": [ @@ -52,14 +50,12 @@ } ], "lettering_translation": "Luxembourg\r\n2019\r\nGC F", - "picture": "https://en.numista.com/catalogue/photos/luxembourg/2090-original.jpg", + "picture": "/photos/luxembourg/2090-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/2090-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, shows the European continent without borders", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -67,7 +63,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/luxembourg/2091-original.jpg", + "picture": "/photos/luxembourg/2091-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/2091-180.jpg", "picture_copyright": "Ulmo" }, @@ -85,10 +81,7 @@ "maxYear": 2006 } ], - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -111,7 +104,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/luxembourg/1780-original.jpg", + "picture": "/photos/luxembourg/1780-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/luxembourg/1780-180.jpg", "picture_copyright": "Cyrillius" }, @@ -125,5 +118,6 @@ "name": "Royal Dutch Mint" } ], - "count": 1 + "count": 1, + "color": "rgb(204,194,147)" } diff --git a/public/coins/malta/2183.json b/public/coins/malta/2183.json index 8631d37..6eeb06f 100644 --- a/public/coins/malta/2183.json +++ b/public/coins/malta/2183.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Noel Galea Bason" - ], + "engravers": ["Noel Galea Bason"], "description": "The coin features the Mnajdra Temple Altar and the inscription Malta & the year (2008) below it. \r\nThe coin's outer ring bears the 12 stars (signifying the Union of 12 countries initially into the European Union).", "lettering": "MALTA 2008\r\nNGB", "lettering_scripts": [ @@ -47,15 +45,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/malte/544-original.jpg", + "picture": "/photos/malte/544-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/malte/544-180.jpg", "picture_copyright": "Comptoir des Monnaies", "picture_copyright_url": "http://www.comptoir-des-monnaies.com" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "Left: The numeral 5 and the inscription EURO CENT. \r\nRight: The coin shows Europe in relation to Africa and Asia on a globe with 6 Radiating stars each on either side.", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -63,14 +59,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/malte/545-original.jpg", + "picture": "/photos/malte/545-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/malte/545-180.jpg", "picture_copyright": "Comptoir des Monnaies", "picture_copyright_url": "http://www.comptoir-des-monnaies.com" }, - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -86,7 +80,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/malte/446-original.jpg", + "picture": "/photos/malte/446-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/malte/446-180.jpg", "picture_copyright": "Cyrillius" }, @@ -100,5 +94,6 @@ "name": "Monnaie de Paris" } ], - "count": 1 + "count": 1, + "color": "rgb(204,100,52)" } diff --git a/public/coins/mexico/587.json b/public/coins/mexico/587.json index ff770a4..7ad6d0d 100644 --- a/public/coins/mexico/587.json +++ b/public/coins/mexico/587.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "United Mexican States", - "picture": "https://en.numista.com/catalogue/photos/mexique/6300876642c986.98360504-original.jpg", + "picture": "/photos/mexique/6300876642c986.98360504-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/6300876642c986.98360504-180.jpg", "picture_copyright": "Numismatica Quetzalcoatl (Gabriel Herrera)", "picture_license_name": "CC BY", @@ -59,18 +59,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/mexique/6300876686b293.76761093-original.jpg", + "picture": "/photos/mexique/6300876686b293.76761093-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/6300876686b293.76761093-180.jpg", "picture_copyright": "Numismatica Quetzalcoatl (Gabriel Herrera)", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "comments": "Varieties exist:
\r\n - Reverse: inner ring features placement: closer vs. farther from the side of the ring.
\r\n - Obverse: lettering placement on the  outer ring: closer vs. farther from the right-side ornaments.
\r\n
\r\n\"\"
\r\nBlack Squares denotes the motifs on the $2 coin (Reverse, Outer circle)
\r\n\"\"", - "tags": [ - "Bird", - "Eagle", - "Coat of Arms" - ], + "tags": ["Bird", "Eagle", "Coat of Arms"], "references": [ { "catalogue": { @@ -93,7 +89,7 @@ "orientation": "coin", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/mexique/4308-original.jpg", + "picture": "/photos/mexique/4308-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/4308-180.jpg", "picture_copyright": "G-REMXD" }, @@ -102,5 +98,6 @@ "id": "29", "name": "Casa de Moneda de México" } - ] + ], + "color": "rgb(200,178,129)" } diff --git a/public/coins/mexico/589.json b/public/coins/mexico/589.json index 533f666..74ad06c 100644 --- a/public/coins/mexico/589.json +++ b/public/coins/mexico/589.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "United Mexican States", - "picture": "https://en.numista.com/catalogue/photos/mexique/62f7e905ca9b56.67446950-original.jpg", + "picture": "/photos/mexique/62f7e905ca9b56.67446950-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/62f7e905ca9b56.67446950-180.jpg", "picture_copyright": "Numismatica Quetzalcoatl (Gabriel Herrera)", "picture_license_name": "CC BY", @@ -59,18 +59,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/mexique/62f7e90619b930.03249592-original.jpg", + "picture": "/photos/mexique/62f7e90619b930.03249592-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/62f7e90619b930.03249592-180.jpg", "picture_copyright": "Numismatica Quetzalcoatl (Gabriel Herrera)", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "comments": "2008 - 2010 mintages are considerably lower because those were the years the commemorative coins were released (Centennial of the Revolution and Bicentennial of Independence series).  The mintage for these standard 5 Pesos coins was reduced to nearly a tenth of the normal years, making them more difficult to find and usually more expensive than the commemorative coins of the same years.
\r\n
\r\nVarieties exist:
\r\nBeginning in 2009 the obverse has smaller design features, with the thickness of the font on obverse being finer than the pre-2009 font,  with and without decoration of Serpent's tales above date and '5' of denomination on Reverse:
\r\n
\r\n\"\"
\r\n
\r\n\"\"", - "tags": [ - "Bird", - "Eagle", - "Coat of Arms" - ], + "tags": ["Bird", "Eagle", "Coat of Arms"], "references": [ { "catalogue": { @@ -93,7 +89,7 @@ "orientation": "coin", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/mexique/3688-original.jpg", + "picture": "/photos/mexique/3688-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/3688-180.jpg", "picture_copyright": "Cyrillius" }, @@ -102,5 +98,6 @@ "id": "29", "name": "Casa de Moneda de México" } - ] + ], + "color": "rgb(206,176,123)" } diff --git a/public/coins/mexico/591.json b/public/coins/mexico/591.json index 3f983a9..f13516b 100644 --- a/public/coins/mexico/591.json +++ b/public/coins/mexico/591.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "United Mexican States", - "picture": "https://en.numista.com/catalogue/photos/mexique/62f7e963c034e7.87975823-original.jpg", + "picture": "/photos/mexique/62f7e963c034e7.87975823-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/62f7e963c034e7.87975823-180.jpg", "picture_copyright": "Numismatica Quetzalcoatl (Gabriel Herrera)", "picture_license_name": "CC BY", @@ -60,7 +60,7 @@ } ], "lettering_translation": "Ten Pesos", - "picture": "https://en.numista.com/catalogue/photos/mexique/62f7e9642bdcd8.72777248-original.jpg", + "picture": "/photos/mexique/62f7e9642bdcd8.72777248-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/62f7e9642bdcd8.72777248-180.jpg", "picture_copyright": "Numismatica Quetzalcoatl (Gabriel Herrera)", "picture_license_name": "CC BY", @@ -80,11 +80,7 @@ "maxYear": 1995 } ], - "tags": [ - "Bird", - "Coat of Arms", - "Mythology" - ], + "tags": ["Bird", "Coat of Arms", "Mythology"], "references": [ { "catalogue": { @@ -107,7 +103,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/mexique/3670-original.jpg", + "picture": "/photos/mexique/3670-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/mexique/3670-180.jpg", "picture_copyright": "Cyrillius" }, @@ -116,5 +112,6 @@ "id": "29", "name": "Casa de Moneda de México" } - ] + ], + "color": "rgb(172,132,79)" } diff --git a/public/coins/morocco/27352.json b/public/coins/morocco/27352.json index 841cfbf..ab9280b 100644 --- a/public/coins/morocco/27352.json +++ b/public/coins/morocco/27352.json @@ -49,7 +49,7 @@ } ], "lettering_translation": "Kingdom of Morocco\r\nMohammed VI", - "picture": "https://en.numista.com/catalogue/photos/maroc/1346-original.jpg", + "picture": "/photos/maroc/1346-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/1346-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", @@ -64,15 +64,13 @@ } ], "lettering_translation": "5\r\nFive Dirhams", - "picture": "https://en.numista.com/catalogue/photos/maroc/1347-original.jpg", + "picture": "/photos/maroc/1347-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/1347-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, - "tags": [ - "Religious building" - ], + "tags": ["Religious building"], "references": [ { "catalogue": { @@ -101,5 +99,6 @@ "id": "4878", "name": "Dar As-Sikkah" } - ] + ], + "color": "rgb(196,108,52)" } diff --git a/public/coins/morocco/27395.json b/public/coins/morocco/27395.json index 05de1a1..0ce46cc 100644 --- a/public/coins/morocco/27395.json +++ b/public/coins/morocco/27395.json @@ -48,7 +48,7 @@ "name": "Arabic" } ], - "picture": "https://en.numista.com/catalogue/photos/maroc/1413-original.jpg", + "picture": "/photos/maroc/1413-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/1413-180.jpg", "picture_copyright": "Essor Prof" }, @@ -60,14 +60,11 @@ "name": "Arabic" } ], - "picture": "https://en.numista.com/catalogue/photos/maroc/1343-original.jpg", + "picture": "/photos/maroc/1343-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/1343-180.jpg", "picture_copyright": "Essor Prof" }, - "tags": [ - "Castle or fortification", - "Tree" - ], + "tags": ["Castle or fortification", "Tree"], "references": [ { "catalogue": { @@ -89,5 +86,6 @@ "id": "4878", "name": "Dar As-Sikkah" } - ] + ], + "color": "rgb(213,187,134)" } diff --git a/public/coins/morocco/3818.json b/public/coins/morocco/3818.json index d2541e9..d37464b 100644 --- a/public/coins/morocco/3818.json +++ b/public/coins/morocco/3818.json @@ -49,7 +49,7 @@ } ], "lettering_translation": "Muhammad the Sixth\r\nThe Kingdom of Morocco", - "picture": "https://en.numista.com/catalogue/photos/maroc/614-original.jpg", + "picture": "/photos/maroc/614-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/614-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", @@ -64,15 +64,13 @@ } ], "lettering_translation": "2002 1423\r\nIf you support God, help you\r\nFive 5 dirhams", - "picture": "https://en.numista.com/catalogue/photos/maroc/615-original.jpg", + "picture": "/photos/maroc/615-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/615-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -95,7 +93,8 @@ "orientation": "coin", "edge": { "description": "Segmented reeding", - "picture": "https://en.numista.com/catalogue/photos/maroc/341-original.jpg", + "picture": "/photos/maroc/341-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/maroc/341-180.jpg" - } + }, + "color": "rgb(152.47422680412373,134.07216494845358,102.52577319587627)" } diff --git a/public/coins/nepal/5737.json b/public/coins/nepal/5737.json index 0ada21b..9e36cec 100644 --- a/public/coins/nepal/5737.json +++ b/public/coins/nepal/5737.json @@ -49,7 +49,7 @@ "description": "Mount Everest and \"Sagarmatha\" (name of Everest in Nepali) as the inscription", "lettering": "सगरमाथा \r\n२०६६", "lettering_translation": "Sagarmatha\r\n2066", - "picture": "https://en.numista.com/catalogue/photos/nepal/596-original.jpg", + "picture": "/photos/nepal/596-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/nepal/596-180.jpg", "picture_copyright": "Joseph Kunnappally" }, @@ -57,15 +57,11 @@ "description": "Farmer ploughing with water buffalos", "lettering": "नेपाल NEPAL\r\n२ रुपैयाँ", "lettering_translation": "Nepal\r\n2 Rupee", - "picture": "https://en.numista.com/catalogue/photos/nepal/597-original.jpg", + "picture": "/photos/nepal/597-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/nepal/597-180.jpg", "picture_copyright": "Joseph Kunnappally" }, - "tags": [ - "Agriculture", - "Cow or bovine", - "Mountain" - ], + "tags": ["Agriculture", "Cow or bovine", "Mountain"], "references": [ { "catalogue": { @@ -81,10 +77,11 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/nepal/1707-original.jpg", + "picture": "/photos/nepal/1707-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/nepal/1707-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", "picture_license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en" - } + }, + "color": "rgb(197,156,60)" } diff --git a/public/coins/netherlands/145.json b/public/coins/netherlands/145.json index 2cfe989..54e1134 100644 --- a/public/coins/netherlands/145.json +++ b/public/coins/netherlands/145.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Bruno Ninaber van Eyben" - ], + "engravers": ["Bruno Ninaber van Eyben"], "description": "An uncluttered portrait of Queen Beatrix is encircled by the twelve stars of Europe and the legend \"BEATRIX KONINGIN DER NEDERLANDEN\" (Beatrix queen of the Netherlands)", "lettering": "BEATRIX KONINGIN DER NEDERLANDEN 2006", "lettering_scripts": [ @@ -51,16 +49,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/pays-bas/6228248f2ea4c4.55020389-original.jpg", + "picture": "/photos/pays-bas/6228248f2ea4c4.55020389-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/6228248f2ea4c4.55020389-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "1 EURO\r\nCENT LL", "lettering_scripts": [ @@ -68,7 +64,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/pays-bas/6228249009e060.96783267-original.jpg", + "picture": "/photos/pays-bas/6228249009e060.96783267-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/6228249009e060.96783267-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -99,10 +95,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -125,7 +118,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/2010-original.jpg", + "picture": "/photos/pays-bas/2010-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/2010-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +128,6 @@ "name": "Royal Dutch Mint" } ], - "count": 2 + "count": 2, + "color": "rgb(197,147,115)" } diff --git a/public/coins/netherlands/147.json b/public/coins/netherlands/147.json index 1cc601c..0e05dc5 100644 --- a/public/coins/netherlands/147.json +++ b/public/coins/netherlands/147.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Bruno Ninaber van Eyben" - ], + "engravers": ["Bruno Ninaber van Eyben"], "description": "An uncluttered portrait of Queen Beatrix is encircled by the twelve stars of Europe and the date below", "lettering": "BEATRIX KONINGIN DER NEDERLANDEN\r\n2003", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Beatrix queen of the Netherlands\r\n2003", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/61fde4379b8e66.45331830-original.jpg", + "picture": "/photos/pays-bas/61fde4379b8e66.45331830-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/61fde4379b8e66.45331830-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO\r\nCENT LL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/pays-bas/61fde438a4eb65.87953789-original.jpg", + "picture": "/photos/pays-bas/61fde438a4eb65.87953789-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/61fde438a4eb65.87953789-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -100,10 +96,7 @@ "maxYear": 2013 } ], - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -126,7 +119,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/2008-original.jpg", + "picture": "/photos/pays-bas/2008-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/2008-180.jpg", "picture_copyright": "Cyrillius" }, @@ -136,5 +129,6 @@ "name": "Royal Dutch Mint" } ], - "count": 3 + "count": 3, + "color": "rgb(164,97,51)" } diff --git a/public/coins/netherlands/54956.json b/public/coins/netherlands/54956.json index c9a71ad..ff31e89 100644 --- a/public/coins/netherlands/54956.json +++ b/public/coins/netherlands/54956.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Erwin Olaf" - ], + "engravers": ["Erwin Olaf"], "description": "King Willem-Alexander of the Netherlands facing right", "lettering": "Willem-Alexander Koning der Nederlanden\r\n2014", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Willem-Alexander, King of the Netherlands\r\n2014", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/63c250f7cc3e64.39706022-original.jpg", + "picture": "/photos/pays-bas/63c250f7cc3e64.39706022-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/63c250f7cc3e64.39706022-180.jpg", "picture_copyright": "brismike", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, shows the European continent without borders", "lettering": "10 EURO \r\nCENT LL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/pays-bas/63c250f8b32813.01251747-original.jpg", + "picture": "/photos/pays-bas/63c250f8b32813.01251747-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/63c250f8b32813.01251747-180.jpg", "picture_copyright": "brismike", "picture_license_name": "CC BY-NC", @@ -89,10 +85,7 @@ "maxYear": 2016 } ], - "tags": [ - "Map", - "Monarch" - ], + "tags": ["Map", "Monarch"], "references": [ { "catalogue": { @@ -115,7 +108,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/2005-original.jpg", + "picture": "/photos/pays-bas/2005-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/2005-180.jpg", "picture_copyright": "Cyrillius" }, @@ -125,5 +118,6 @@ "name": "Royal Dutch Mint" } ], - "count": 2 + "count": 2, + "color": "rgb(158,131,74)" } diff --git a/public/coins/netherlands/734.json b/public/coins/netherlands/734.json index f910d97..81f0e59 100644 --- a/public/coins/netherlands/734.json +++ b/public/coins/netherlands/734.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ludwig Oswald Wenckebach" - ], + "engravers": ["Ludwig Oswald Wenckebach"], "description": "Portrait of Queen Juliana facing right", "lettering": "JULIANA KONINGIN DER NEDERLANDEN", "lettering_scripts": [ @@ -53,7 +51,7 @@ } ], "lettering_translation": "Juliana, Queen of the Netherlands", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/627e973047f4d1.63961255-original.jpg", + "picture": "/photos/pays-bas/627e973047f4d1.63961255-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/627e973047f4d1.63961255-180.jpg", "picture_copyright": "Nyxain" }, @@ -65,7 +63,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/pays-bas/627e973081a602.04870298-original.jpg", + "picture": "/photos/pays-bas/627e973081a602.04870298-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/627e973081a602.04870298-180.jpg", "picture_copyright": "Nyxain" }, @@ -94,10 +92,7 @@ "maxYear": 2001 } ], - "tags": [ - "Monarch", - "Crown" - ], + "tags": ["Monarch", "Crown"], "references": [ { "catalogue": { @@ -120,7 +115,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/pays-bas/2880-original.jpg", + "picture": "/photos/pays-bas/2880-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pays-bas/2880-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", @@ -135,5 +130,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(120.28301886792453,134.71698113207546,125.09433962264151)" } diff --git a/public/coins/poland/524.json b/public/coins/poland/524.json index 481b007..dda2628 100644 --- a/public/coins/poland/524.json +++ b/public/coins/poland/524.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Stanisława Wątróbska-Frindt" - ], + "designers": ["Stanisława Wątróbska-Frindt"], "description": "The white eagle, the emblem of Poland which is depicted on its coats of arms, surrounded with the name of the country, and the date at the bottom", "lettering": "RZECZPOSPOLITA POLSKA\r\nmw\r\n• 1991 •", "lettering_scripts": [ @@ -48,15 +46,13 @@ } ], "lettering_translation": "Republic of Poland\r\nMW\r\n1991", - "picture": "https://en.numista.com/catalogue/photos/pologne/5ebaafe3130864.47955265-original.jpg", + "picture": "/photos/pologne/5ebaafe3130864.47955265-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pologne/5ebaafe3130864.47955265-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" }, "reverse": { - "designers": [ - "Ewa Tyc-Karpińska" - ], + "designers": ["Ewa Tyc-Karpińska"], "description": "The face value accompanied by five oak leaves", "lettering": "5 GROSZY", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/pologne/5ebaafe3633550.91025555-original.jpg", + "picture": "/photos/pologne/5ebaafe3633550.91025555-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pologne/5ebaafe3633550.91025555-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" @@ -118,7 +114,7 @@ "orientation": "medal", "edge": { "description": "Milled and plain alternately (four each)", - "picture": "https://en.numista.com/catalogue/photos/pologne/5ebaafe3b09d51.21122552-original.jpg", + "picture": "/photos/pologne/5ebaafe3b09d51.21122552-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/pologne/5ebaafe3b09d51.21122552-180.jpg", "picture_copyright": "Narodowy Bank Polski", "picture_copyright_url": "http://www.nbp.pl" @@ -128,5 +124,6 @@ "id": "27", "name": "Mint of Poland" } - ] + ], + "color": "rgb(167,140,70)" } diff --git a/public/coins/portugal/10288.json b/public/coins/portugal/10288.json index 0d2d802..8e7f3ed 100644 --- a/public/coins/portugal/10288.json +++ b/public/coins/portugal/10288.json @@ -44,7 +44,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/63b5dd80616ed2.87781513-original.jpg", + "picture": "/photos/portugal/63b5dd80616ed2.87781513-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/63b5dd80616ed2.87781513-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" @@ -57,16 +57,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/63b5dd80d9c115.01056289-original.jpg", + "picture": "/photos/portugal/63b5dd80d9c115.01056289-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/63b5dd80d9c115.01056289-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" }, "series": "System 1981-2001", "commemorated_topic": "Olympic Games 2000 in Sydney", - "tags": [ - "Summer Olympic Games" - ], + "tags": ["Summer Olympic Games"], "references": [ { "catalogue": { @@ -95,5 +93,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(203,174,109)" } diff --git a/public/coins/portugal/11635.json b/public/coins/portugal/11635.json index c52eace..9a1d01f 100644 --- a/public/coins/portugal/11635.json +++ b/public/coins/portugal/11635.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "José Cândido" - ], + "engravers": ["José Cândido"], "description": "Shield within globe above value", "lettering": "REPUBLICA PORTUGUESA\r\n200\r\nESCUDOS\r\n1995 J.CANDIDO", "lettering_scripts": [ @@ -48,14 +46,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3425-original.jpg", + "picture": "/photos/portugal/3425-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3425-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "João Duarte" - ], + "engravers": ["João Duarte"], "description": "Jig-saw, the symbol of UN and 50", "lettering": "50\r\n1945-1995\r\nJ.DUARTE INCM", "lettering_scripts": [ @@ -63,16 +59,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3426-original.jpg", + "picture": "/photos/portugal/3426-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3426-180.jpg", "picture_copyright": "Ulmo" }, "series": "System 1981-2001", "commemorated_topic": "50th Anniversary of the United Nations", - "tags": [ - "Coat of Arms", - "United Nations" - ], + "tags": ["Coat of Arms", "United Nations"], "references": [ { "catalogue": { @@ -101,5 +94,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(157.3404255319149,146.48936170212764,97.65957446808511)" } diff --git a/public/coins/portugal/11691.json b/public/coins/portugal/11691.json index f11eb01..fbda171 100644 --- a/public/coins/portugal/11691.json +++ b/public/coins/portugal/11691.json @@ -38,31 +38,26 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Isabel Carriço/Fernando Branco" - ], + "engravers": ["Isabel Carriço/Fernando Branco"], "lettering": "REPUBLICA PORTUGUESA\r\n1997\r\n200 ESC", "lettering_scripts": [ { "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/4756-original.jpg", + "picture": "/photos/portugal/4756-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/4756-180.jpg", "picture_copyright": "Rui-Manuel" }, "reverse": { - "engravers": [ - "Isabel Carriço", - "Fernando Branco" - ], + "engravers": ["Isabel Carriço", "Fernando Branco"], "lettering": "1532 - Pe. LUIS FROIS - 1597\r\nHISTORIA DE JAPAM\r\nISABEL C. F.BRANCO\r\nINCM", "lettering_scripts": [ { "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/4757-original.jpg", + "picture": "/photos/portugal/4757-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/4757-180.jpg", "picture_copyright": "Rui-Manuel" }, @@ -103,10 +98,7 @@ "maxYear": 1997 } ], - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -135,5 +127,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(140.24999999999997,130.05000000000004,114.75000000000001)" } diff --git a/public/coins/portugal/11695.json b/public/coins/portugal/11695.json index a513ba4..c160f3a 100644 --- a/public/coins/portugal/11695.json +++ b/public/coins/portugal/11695.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Isabel Carriço/Fernando Branco" - ], + "engravers": ["Isabel Carriço/Fernando Branco"], "description": "Under a pepper tree twig, the coat of arms of Portugal, the value, and a local boat with lateen sail. Around, country name, date belowr and pearl circle broken by 2 rosettes.", "lettering": "REPUBLICA PORTUGUESA\r\n200 ESC\r\n1998", "lettering_scripts": [ @@ -48,17 +46,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/2307-original.jpg", + "picture": "/photos/portugal/2307-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/2307-180.jpg", "picture_copyright": "A.Monge da Silva", "picture_license_name": "CC0", "picture_license_url": "https://creativecommons.org/publicdomain/zero/1.0/deed.en" }, "reverse": { - "engravers": [ - "Isabel Carriço", - "Fernando Branco" - ], + "engravers": ["Isabel Carriço", "Fernando Branco"], "description": "Vasco da Gama ship and its name, making sail to the right where shown the coast of India north of Calicut from the map of the Atlas Lopo Homem-Reinels of 1519. 1498 is the year of arrival in India.", "lettering": "ISABEL C.-F.BRANCO INCM\r\nINDIA - 1498 ·", "lettering_scripts": [ @@ -66,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/2308-original.jpg", + "picture": "/photos/portugal/2308-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/2308-180.jpg", "picture_license_name": "CC0", "picture_license_url": "https://creativecommons.org/publicdomain/zero/1.0/deed.en" @@ -108,11 +103,7 @@ "maxYear": 1999 } ], - "tags": [ - "Coat of Arms", - "Map", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Map", "Boat or watercraft"], "references": [ { "catalogue": { @@ -141,5 +132,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(151.78571428571428,135.59523809523807,103.21428571428572)" } diff --git a/public/coins/portugal/1238.json b/public/coins/portugal/1238.json index efc1f10..4f9b1fa 100644 --- a/public/coins/portugal/1238.json +++ b/public/coins/portugal/1238.json @@ -39,9 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "José Cândido" - ], + "engravers": ["José Cândido"], "description": "The Portuguese coat of arms above the denomination, the date at the bottom.", "lettering": "REPUBLICA PORTUGUESA\r\n200\r\nESCUDOS\r\n1991", "lettering_scripts": [ @@ -50,14 +48,12 @@ } ], "lettering_translation": "Portuguese Republic\r\n200\r\nEscudos\r\nINCM", - "picture": "https://en.numista.com/catalogue/photos/portugal/3015-original.jpg", + "picture": "/photos/portugal/3015-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3015-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "José Cândido" - ], + "engravers": ["José Cândido"], "description": "Garcia de Orta (1501-1568), a Renaissance Portuguese Jewish physician and naturalist facing right, mintmark and engraver's name on the sides.", "lettering": "GARCIA DE ORTA\r\nJ. CANDIDO INCM", "lettering_scripts": [ @@ -65,16 +61,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3016-original.jpg", + "picture": "/photos/portugal/3016-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3016-180.jpg", "picture_copyright": "nalaberong" }, "series": "System 1981-2001", "comments": "Different dies are known.
\r\n
\r\nObverse
\r\nDie 1 - thin numerals in date.
\r\nDie 2 - thick numerals in date, date higher and closer to R in REPUBLICA.
\r\n
\r\nReverse
\r\nDie A - all details large, as the result wheat ear near rim; letters in INCM and J. CANDIDO close to each other and stocky.
\r\nDie B - all details smaller, closer to center, as the result wheat ear far from rim;  letters in INCM and J. CANDIDO wide spread and taller.
\r\n\"\"
\r\n
\r\nCombinations
\r\n1+A: 1991.
\r\n1+B: 1992-1998, 2000, 2001.
\r\n2+B: 1999.
\r\n
\r\n
\r\n\"\"", - "tags": [ - "Coat of Arms", - "Scientist" - ], + "tags": ["Coat of Arms", "Scientist"], "references": [ { "catalogue": { @@ -97,7 +90,7 @@ "orientation": "coin", "edge": { "description": "Smooth and reeded (7 sections each).", - "picture": "https://en.numista.com/catalogue/photos/portugal/1229-original.jpg", + "picture": "/photos/portugal/1229-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/1229-180.jpg", "picture_copyright": "ZacUK" }, @@ -106,5 +99,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(151,112,72)" } diff --git a/public/coins/portugal/1242.json b/public/coins/portugal/1242.json index b6017bb..98ad4dc 100644 --- a/public/coins/portugal/1242.json +++ b/public/coins/portugal/1242.json @@ -39,9 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "José Cândido" - ], + "engravers": ["José Cândido"], "description": "The arms of Portugal and the denomination below and the date at the bottom", "lettering": "REPUBLICA PORTUGUESA\r\n100 ESCUDOS 2000", "lettering_scripts": [ @@ -50,15 +48,13 @@ } ], "lettering_translation": "Republic of Portugal\r\n100 Escudos 2000", - "picture": "https://en.numista.com/catalogue/photos/portugal/63b5e0ac235cc5.49777063-original.jpg", + "picture": "/photos/portugal/63b5e0ac235cc5.49777063-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/63b5e0ac235cc5.49777063-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" }, "reverse": { - "engravers": [ - "José Cândido" - ], + "engravers": ["José Cândido"], "description": "Pedro Nunes (1502-1578), a Portuguese mathematician, cosmographer, and professor, facing left", "lettering": "PEDRO NUNES \r\nE**U**R**O**P**A\r\nincm JOSÉ CANDIDO", "lettering_scripts": [ @@ -66,17 +62,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/63b5e0ac9ceb16.51789048-original.jpg", + "picture": "/photos/portugal/63b5e0ac9ceb16.51789048-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/63b5e0ac9ceb16.51789048-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" }, "series": "System 1981-2001", "comments": "\"\"", - "tags": [ - "Coat of Arms", - "Science" - ], + "tags": ["Coat of Arms", "Science"], "references": [ { "catalogue": { @@ -99,7 +92,7 @@ "orientation": "coin", "edge": { "description": "Segmented reeding", - "picture": "https://en.numista.com/catalogue/photos/portugal/1087-original.jpg", + "picture": "/photos/portugal/1087-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/1087-180.jpg", "picture_copyright": "ZacUK" }, @@ -108,5 +101,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(223,189,116)" } diff --git a/public/coins/portugal/1243.json b/public/coins/portugal/1243.json index a6d02a8..d770ddd 100644 --- a/public/coins/portugal/1243.json +++ b/public/coins/portugal/1243.json @@ -39,9 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Euclides Vaz" - ], + "engravers": ["Euclides Vaz"], "description": "The arms of Portugal dividing the date and the denomination below, engraver's name and mintmark at the bottom.", "lettering": "REPUBLICA PORTUGUESA\r\n20 ESCUDOS \r\n1987 \r\nE.VAZ INCM", "lettering_scripts": [ @@ -50,24 +48,20 @@ } ], "lettering_translation": "Republic of Portugal", - "picture": "https://en.numista.com/catalogue/photos/portugal/3007-original.jpg", + "picture": "/photos/portugal/3007-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3007-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Euclides Vaz" - ], + "engravers": ["Euclides Vaz"], "description": "A nautical compass with pointer at top and Order of Christ Cross at right.", - "picture": "https://en.numista.com/catalogue/photos/portugal/3008-original.jpg", + "picture": "/photos/portugal/3008-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3008-180.jpg", "picture_copyright": "nalaberong" }, "series": "System 1981-2001", "comments": "Different Obv. and Rev. dies are known.
\r\n
\r\nObverse
\r\nDie 1 - details smaller, ESCUDOS far from rim,  E.VAZ INCM close to rim.
\r\nDie 2 - details a bit larger, ESCUDOS far from rim,  E.VAZ INCM far from rim.
\r\nDie 3 - details larger, ESCUDOS close to rim,  E.VAZ INCM far from rim.
\r\n\"\"
\r\n
\r\nReverse
\r\nDie A - details smaller, top pointer short, inner cross in Order of Christ Cross small.
\r\nDie B - details larger, top pointer long, inner cross in Order of Christ Cross long.
\r\n\"\"
\r\n
\r\nCombinations
\r\n1+A: 1986, 1987.
\r\n2+B: 1988-1997.
\r\n3+B: 1998-2001.
\r\n
\r\nCorrespondence to Standard Catalog of World Coins
\r\nKM#634.1: 1+A, 2+B.
\r\nKM#634.2: 3+B.", - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -90,7 +84,7 @@ "orientation": "coin", "edge": { "description": "Coarse reeded.", - "picture": "https://en.numista.com/catalogue/photos/portugal/1088-original.jpg", + "picture": "/photos/portugal/1088-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/1088-180.jpg", "picture_copyright": "ZacUK" }, @@ -99,5 +93,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(137.17241379310343,121.34482758620689,117.82758620689656)" } diff --git a/public/coins/portugal/13034.json b/public/coins/portugal/13034.json index cde40f0..9b4fe48 100644 --- a/public/coins/portugal/13034.json +++ b/public/coins/portugal/13034.json @@ -38,30 +38,26 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "A.Marinho" - ], + "engravers": ["A.Marinho"], "lettering": "REPUBLICA PORTUGUESA\r\n200\r\nESC\r\n·1999", "lettering_scripts": [ { "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3445-original.jpg", + "picture": "/photos/portugal/3445-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3445-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "A.Marinho" - ], + "engravers": ["A.Marinho"], "lettering": "MORTE NO MAR\r\nA. MARINHO INCM", "lettering_scripts": [ { "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3446-original.jpg", + "picture": "/photos/portugal/3446-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3446-180.jpg", "picture_copyright": "Ulmo" }, @@ -91,10 +87,7 @@ "maxYear": 1999 } ], - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -122,5 +115,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(109.00763358778627,124.58015267175574,145.99236641221373)" } diff --git a/public/coins/portugal/13038.json b/public/coins/portugal/13038.json index 488bc2a..986061d 100644 --- a/public/coins/portugal/13038.json +++ b/public/coins/portugal/13038.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "E.Byrne" - ], + "engravers": ["E.Byrne"], "description": "Coat of arms of Portugal on top, two ships, caravels with lateen sails, date and value below. Beaded circle around.", "lettering": "REPUBLICA PORTUGUESA\r\n1999\r\n200 ESC", "lettering_scripts": [ @@ -48,14 +46,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3449-original.jpg", + "picture": "/photos/portugal/3449-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3449-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Eloísa Byrne" - ], + "engravers": ["Eloísa Byrne"], "description": "Portrait in armor with a sword in his right hand and an astrolabe in the left hand in recognition of his talents as military and cartographer. His name above and dates of birth and death. Beaded circle around.", "lettering": "DUARTE PACHECO PEREIRA\r\n1460\r\n1533\r\nINCM\r\nE.BYRNE", "lettering_scripts": [ @@ -63,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3450-original.jpg", + "picture": "/photos/portugal/3450-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3450-180.jpg", "picture_copyright": "Ulmo" }, @@ -93,10 +89,7 @@ "maxYear": 1999 } ], - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -124,5 +117,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(147.7380952380952,141.66666666666669,107.26190476190477)" } diff --git a/public/coins/portugal/153.json b/public/coins/portugal/153.json index 8df1193..6608a1f 100644 --- a/public/coins/portugal/153.json +++ b/public/coins/portugal/153.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "V. M. F. dos Santos" - ], + "engravers": ["V. M. F. dos Santos"], "description": "The first royal seal of 1134 of Afonso Henriques, the first king of Portugal, is encircled by alternately the seven country's castles and the five coats of arms, which appear on the Portuguese flag, and the letters of the word \"PORTUGAL\", themselves encircled by the twelve stars of Europe", "lettering": "P O R T U G A L\r\nPOR TV\r\nGA L\r\nVS INCM\r\n2 0 0 2", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/5970-original.jpg", + "picture": "/photos/portugal/5970-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5970-180.jpg", "picture_copyright": "Joseph Kunnappally" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -62,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/5971-original.jpg", + "picture": "/photos/portugal/5971-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5971-180.jpg", "picture_copyright": "Joseph Kunnappally" }, @@ -89,7 +85,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/portugal/3778-original.jpg", + "picture": "/photos/portugal/3778-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3778-180.jpg", "picture_copyright": "Cyrillius" }, @@ -99,5 +95,6 @@ "name": "Lisbon" } ], - "count": 478 + "count": 478, + "color": "rgb(228,132,80)" } diff --git a/public/coins/portugal/155.json b/public/coins/portugal/155.json index 2f80fff..1baca28 100644 --- a/public/coins/portugal/155.json +++ b/public/coins/portugal/155.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Vítor Manuel Fernandes dos Santos" - ], + "engravers": ["Vítor Manuel Fernandes dos Santos"], "description": "The first royal seal of 1134 of Afonso Henriques, the first king of Portugal, is encircled by alternately the seven country's castles and the five coats of arms, which appear an the Portuguese flag, and the letters of the word \"PORTUGAL\", themselves encircled by the twelve stars of Europe", "lettering": "P O R T U G A L\r\nPOR TV\r\nGA L\r\nVS INCM\r\n2 011", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/5975-original.jpg", + "picture": "/photos/portugal/5975-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5975-180.jpg", "picture_copyright": "Joseph Kunnappally" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -62,14 +58,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/5976-original.jpg", + "picture": "/photos/portugal/5976-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5976-180.jpg", "picture_copyright": "Joseph Kunnappally" }, "comments": "From 2011 onwards the design of the Obverse changed to display more thin and delicate lines and motifs, this can be seen in the following image below (comparison between 2010 design, and the new 2011-present one):
\r\n\"\"
\r\n
\r\n\"\"", - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -92,7 +86,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/portugal/3776-original.jpg", + "picture": "/photos/portugal/3776-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3776-180.jpg", "picture_copyright": "Cyrillius" }, @@ -102,5 +96,6 @@ "name": "Lisbon" } ], - "count": 92 + "count": 92, + "color": "rgb(180,117,79)" } diff --git a/public/coins/portugal/156.json b/public/coins/portugal/156.json index 316d931..f17773f 100644 --- a/public/coins/portugal/156.json +++ b/public/coins/portugal/156.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "V. M. Fernandes dos Santos" - ], + "engravers": ["V. M. Fernandes dos Santos"], "description": "The second royal seal of 1142 of Afonso Henriques, the first king of Portugal, is encircled by alternately the seven country's castles and the five coats of arms, which appear an the Portuguese flag, and the letters of the word \"PORTUGAL\", themselves encircled by the twelve stars of Europe", "lettering": "P O R T U G A L\r\nPO RT\r\nVG AL\r\nVS INCM\r\n2 0 0 5", "lettering_scripts": [ @@ -47,16 +45,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/62c9239412ff43.02001796-original.jpg", + "picture": "/photos/portugal/62c9239412ff43.02001796-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/62c9239412ff43.02001796-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/62c92394a2db18.80480132-original.jpg", + "picture": "/photos/portugal/62c92394a2db18.80480132-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/62c92394a2db18.80480132-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -98,7 +94,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/portugal/5418-original.jpg", + "picture": "/photos/portugal/5418-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5418-180.jpg", "picture_copyright": "Cyrillius" }, @@ -108,5 +104,6 @@ "name": "Lisbon" } ], - "count": 3 + "count": 3, + "color": "rgb(156,132,60)" } diff --git a/public/coins/portugal/2047.json b/public/coins/portugal/2047.json index 919ba65..2990b40 100644 --- a/public/coins/portugal/2047.json +++ b/public/coins/portugal/2047.json @@ -39,9 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "João Cutileiro" - ], + "engravers": ["João Cutileiro"], "description": "Small shield of Portugal within sprigs above the value", "lettering": "1998\r\n200 \r\nESCUDOS \r\nREPUBLICA PORTUGUESA\r\nDES. 7S GRAV.", "lettering_scripts": [ @@ -50,14 +48,12 @@ } ], "lettering_translation": "1998\r\n200\r\nEscudos\r\nRepublic of Portugal\r\nDES. 7S GRAV.", - "picture": "https://en.numista.com/catalogue/photos/portugal/3922-original.jpg", + "picture": "/photos/portugal/3922-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3922-180.jpg", "picture_copyright": "ken6528" }, "reverse": { - "engravers": [ - "João Cutileiro" - ], + "engravers": ["João Cutileiro"], "description": "Expo 98 and fish within sprigs", "lettering": "EXPO\r\n98\r\nINCM", "lettering_scripts": [ @@ -65,17 +61,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3923-original.jpg", + "picture": "/photos/portugal/3923-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3923-180.jpg", "picture_copyright": "ken6528" }, "series": "System 1981-2001", "commemorated_topic": "Expo '98", - "tags": [ - "Fish", - "Coat of Arms", - "Fair or exhibition" - ], + "tags": ["Fish", "Coat of Arms", "Fair or exhibition"], "references": [ { "catalogue": { @@ -98,8 +90,9 @@ "orientation": "coin", "edge": { "description": "Alternating plain and milled sections (7 each)", - "picture": "https://en.numista.com/catalogue/photos/portugal/2585-original.jpg", + "picture": "/photos/portugal/2585-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/2585-180.jpg", "picture_copyright": "ZacUK" - } + }, + "color": "rgb(110,94,44)" } diff --git a/public/coins/portugal/2384.json b/public/coins/portugal/2384.json index 3727476..2a99e61 100644 --- a/public/coins/portugal/2384.json +++ b/public/coins/portugal/2384.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "The shield of Portugal with the denomination to the right and below and the country name above", "lettering": "REPÚBLICA PORTUGUESA\r\n25 \r\nESCUDOS", "lettering_scripts": [ @@ -49,7 +47,7 @@ } ], "lettering_translation": "Republic of Portugal", - "picture": "https://en.numista.com/catalogue/photos/portugal/3010-original.jpg", + "picture": "/photos/portugal/3010-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3010-180.jpg", "picture_copyright": "nalaberong" }, @@ -62,7 +60,7 @@ } ], "lettering_translation": "Freedom and Democracy", - "picture": "https://en.numista.com/catalogue/photos/portugal/3009-original.jpg", + "picture": "/photos/portugal/3009-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3009-180.jpg", "picture_copyright": "nalaberong" }, @@ -81,9 +79,7 @@ "maxYear": 1978 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -106,7 +102,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/portugal/614c78f3e40dc5.10356404-original.jpg", + "picture": "/photos/portugal/614c78f3e40dc5.10356404-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/614c78f3e40dc5.10356404-180.jpg", "picture_copyright": "Walter_Scott" }, @@ -115,5 +111,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(137.30769230769232,123.04195804195807,117.69230769230766)" } diff --git a/public/coins/portugal/4141.json b/public/coins/portugal/4141.json index c1329ae..6acc808 100644 --- a/public/coins/portugal/4141.json +++ b/public/coins/portugal/4141.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Frederico Augusto de Campos" - ], + "engravers": ["Frederico Augusto de Campos"], "description": "Portrait of Luís I of Portugal left", "lettering": "D·LUIZ·I·REI·DE·PORTUGAL", "lettering_scripts": [ @@ -51,14 +49,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/60bbadd52eda20.24624387-original.jpg", + "picture": "/photos/portugal/60bbadd52eda20.24624387-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/60bbadd52eda20.24624387-180.jpg", "picture_copyright": "RRnumismatics" }, "reverse": { - "engravers": [ - "Frederico Augusto de Campos" - ], + "engravers": ["Frederico Augusto de Campos"], "description": "Value and date within wreath", "lettering": "V\r\nREIS\r\n1885", "lettering_scripts": [ @@ -66,7 +62,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/60bbadd5954c14.62441231-original.jpg", + "picture": "/photos/portugal/60bbadd5954c14.62441231-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/60bbadd5954c14.62441231-180.jpg", "picture_copyright": "RRnumismatics" }, @@ -188,5 +184,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(168,110,72)" } diff --git a/public/coins/portugal/4729.json b/public/coins/portugal/4729.json index a80d48f..11d8793 100644 --- a/public/coins/portugal/4729.json +++ b/public/coins/portugal/4729.json @@ -39,9 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Vítor Manuel Fernandes dos Santos" - ], + "engravers": ["Vítor Manuel Fernandes dos Santos"], "description": "Shield and flying bird above the value", "lettering": "REPUBLICA PORTUGUESA \r\n100 \r\nESCUDOS\r\n1997\r\nINCM VITOR SANTOS", "lettering_scripts": [ @@ -50,14 +48,12 @@ } ], "lettering_translation": "Republic of Portugal\r\n100\r\nEscudos\r\n1997\r\nINCM Vitor Santos", - "picture": "https://en.numista.com/catalogue/photos/portugal/4750-original.jpg", + "picture": "/photos/portugal/4750-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/4750-180.jpg", "picture_copyright": "ken6528" }, "reverse": { - "engravers": [ - "Vítor Manuel Fernandes dos Santos" - ], + "engravers": ["Vítor Manuel Fernandes dos Santos"], "description": "Monk Seal left", "lettering": "EXPOSIÇÃO MUNDIAL DE LISBOA EXPO'98", "lettering_scripts": [ @@ -66,18 +62,13 @@ } ], "lettering_translation": "Lisbon World Exhibition Expo 1998", - "picture": "https://en.numista.com/catalogue/photos/portugal/4751-original.jpg", + "picture": "/photos/portugal/4751-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/4751-180.jpg", "picture_copyright": "ken6528" }, "series": "System 1981-2001", "commemorated_topic": "Lisbon World Expo '98", - "tags": [ - "Bird", - "Marine mammal", - "Coat of Arms", - "Fair or exhibition" - ], + "tags": ["Bird", "Marine mammal", "Coat of Arms", "Fair or exhibition"], "references": [ { "catalogue": { @@ -106,5 +97,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(168,133,77)" } diff --git a/public/coins/portugal/5786.json b/public/coins/portugal/5786.json index b620648..df047ed 100644 --- a/public/coins/portugal/5786.json +++ b/public/coins/portugal/5786.json @@ -43,13 +43,11 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3859-original.jpg", + "picture": "/photos/portugal/3859-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3859-180.jpg" }, "reverse": { - "engravers": [ - "António Marinho" - ], + "engravers": ["António Marinho"], "description": "Espingarda - Mounted cavalry man shooting rifle\r\nthe chinese characters mean \"iron\" and \"gun\"", "lettering": "鉄砲\r\nINCM A.MARINHO\r\nESPINGARDA\r\n1543·1575", "lettering_scripts": [ @@ -57,7 +55,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3860-original.jpg", + "picture": "/photos/portugal/3860-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3860-180.jpg" }, "series": "IV-Portuguese Discoveries (Arrival to Japan)", @@ -131,5 +129,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(140.3488372093024,124.53488372093022,114.65116279069763)" } diff --git a/public/coins/portugal/6499.json b/public/coins/portugal/6499.json index 419ea88..d1fc72e 100644 --- a/public/coins/portugal/6499.json +++ b/public/coins/portugal/6499.json @@ -45,7 +45,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/2304-original.jpg", + "picture": "/photos/portugal/2304-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/2304-180.jpg", "picture_copyright": "A.Monge da Silva", "picture_license_name": "CC0", @@ -59,17 +59,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/2310-original.jpg", + "picture": "/photos/portugal/2310-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/2310-180.jpg", "picture_license_name": "CC0", "picture_license_url": "https://creativecommons.org/publicdomain/zero/1.0/deed.en" }, "series": "IV-Portuguese Discoveries (Arrival to Japan)", "commemorated_topic": "450th Anniversary of Namban Art", - "tags": [ - "Coat of Arms", - "Tree" - ], + "tags": ["Coat of Arms", "Tree"], "references": [ { "catalogue": { @@ -97,5 +94,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(208,196,148)" } diff --git a/public/coins/portugal/6500.json b/public/coins/portugal/6500.json index ae4bb1a..783a0cc 100644 --- a/public/coins/portugal/6500.json +++ b/public/coins/portugal/6500.json @@ -45,7 +45,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3419-original.jpg", + "picture": "/photos/portugal/3419-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3419-180.jpg", "picture_copyright": "Ulmo" }, @@ -58,7 +58,7 @@ } ], "lettering_translation": "Tenshō boy envoys", - "picture": "https://en.numista.com/catalogue/photos/portugal/3420-original.jpg", + "picture": "/photos/portugal/3420-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3420-180.jpg", "picture_copyright": "Ulmo" }, @@ -88,10 +88,7 @@ "maxYear": 1993 } ], - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -120,5 +117,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(99.06474820143886,104.56834532374101,155.93525179856115)" } diff --git a/public/coins/portugal/7130.json b/public/coins/portugal/7130.json index 4c8f1d5..14701fb 100644 --- a/public/coins/portugal/7130.json +++ b/public/coins/portugal/7130.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Hélder Batista" - ], + "engravers": ["Hélder Batista"], "description": "Waves above the coat of arms of Portugal", "lettering": "० REPUBLICA + PORTUGUESA ०\r\n1974 1984\r\nHELDER BATISTA incm", "lettering_scripts": [ @@ -47,29 +45,25 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3385-original.jpg", + "picture": "/photos/portugal/3385-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3385-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Hélder Batista" - ], + "engravers": ["Hélder Batista"], "lettering": "25 ABRIL 1984\r\nDEMOCRACIA\r\n० 25 ESCUDOS ०\r\nLIBERDADE", "lettering_scripts": [ { "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3386-original.jpg", + "picture": "/photos/portugal/3386-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3386-180.jpg", "picture_copyright": "Ulmo" }, "series": "System 1981-2001", "commemorated_topic": "10th anniversary of the Carnation Revolution", - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -92,5 +86,6 @@ "orientation": "coin", "edge": { "description": "Reeded" - } + }, + "color": "rgb(173.48360655737704,165.12295081967218,81.51639344262296)" } diff --git a/public/coins/portugal/7193.json b/public/coins/portugal/7193.json index a6f9b10..68c9c46 100644 --- a/public/coins/portugal/7193.json +++ b/public/coins/portugal/7193.json @@ -44,16 +44,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/631127097b1672.77118328-original.jpg", + "picture": "/photos/portugal/631127097b1672.77118328-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/631127097b1672.77118328-180.jpg", "picture_copyright": "Ben-jamin", "picture_license_name": "CC0", "picture_license_url": "https://creativecommons.org/publicdomain/zero/1.0/deed.en" }, "reverse": { - "engravers": [ - "Eloisa Byrne" - ], + "engravers": ["Eloisa Byrne"], "description": "Portuguese boat, probably a carrack or nau, close to the Japanese coast on the left, drawn according to the style of Namban art. Around above, name in latin and Japanese caracters of the landing island, south of Kyushu.", "lettering": "種子島 * TANEGASHIMA \r\nINCM * 1543•1993 * E.BYRNE", "lettering_scripts": [ @@ -61,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/63112709ea8152.94355727-original.jpg", + "picture": "/photos/portugal/63112709ea8152.94355727-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/63112709ea8152.94355727-180.jpg", "picture_copyright": "Ben-jamin", "picture_license_name": "CC0", @@ -93,11 +91,7 @@ "maxYear": 1993 } ], - "tags": [ - "Coat of Arms", - "Map", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Map", "Boat or watercraft"], "references": [ { "catalogue": { @@ -126,5 +120,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(181.18421052631584,73.81578947368416,127.50000000000003)" } diff --git a/public/coins/portugal/768.json b/public/coins/portugal/768.json index 42017af..619375a 100644 --- a/public/coins/portugal/768.json +++ b/public/coins/portugal/768.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Frederico Augusto de Campos" - ], + "engravers": ["Frederico Augusto de Campos"], "description": "Portrait of Luís I of Portugal facing left", "lettering": "D·LUIZ·I·REI·DE·PORTUGAL", "lettering_scripts": [ @@ -52,14 +50,12 @@ } ], "lettering_translation": "Luís I King of Portugal", - "picture": "https://en.numista.com/catalogue/photos/portugal/5792-original.jpg", + "picture": "/photos/portugal/5792-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5792-180.jpg", "picture_copyright": "Darkcid" }, "reverse": { - "engravers": [ - "Frederico Augusto de Campos" - ], + "engravers": ["Frederico Augusto de Campos"], "description": "Large wreath (and olive branch to the right and an oak branch to the left both tied by a ribbon at the bottom) containing the value above the date", "lettering": "XX\r\nREIS\r\n1883", "lettering_scripts": [ @@ -68,7 +64,7 @@ } ], "lettering_translation": "20\r\nReis\r\n1883", - "picture": "https://en.numista.com/catalogue/photos/portugal/5793-original.jpg", + "picture": "/photos/portugal/5793-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5793-180.jpg", "picture_copyright": "Darkcid" }, @@ -195,7 +191,7 @@ "orientation": "coin", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/portugal/1602-original.jpg", + "picture": "/photos/portugal/1602-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/1602-180.jpg", "picture_copyright": "ADRIARTH" }, @@ -204,5 +200,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(167,108,66)" } diff --git a/public/coins/portugal/770.json b/public/coins/portugal/770.json index 633b677..576b9d6 100644 --- a/public/coins/portugal/770.json +++ b/public/coins/portugal/770.json @@ -39,9 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Euclides Vaz" - ], + "engravers": ["Euclides Vaz"], "description": "The arms of Portugal dividing the date with the denomination below, engraver's name and the mintmark on the sides of denomination.", "lettering": "REPUBLICA PORTUGUESA\r\n19 88\r\n50\r\nESCUDOS\r\nE. VAZ incm", "lettering_scripts": [ @@ -50,25 +48,20 @@ } ], "lettering_translation": "Republic of Portugal\r\n1988\r\n50\r\nEscudos\r\nE. VAZ incm", - "picture": "https://en.numista.com/catalogue/photos/portugal/3011-original.jpg", + "picture": "/photos/portugal/3011-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3011-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Euclides Vaz" - ], + "engravers": ["Euclides Vaz"], "description": "A ship or stylized boat at sail left with four fishes below.", - "picture": "https://en.numista.com/catalogue/photos/portugal/3012-original.jpg", + "picture": "/photos/portugal/3012-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3012-180.jpg", "picture_copyright": "nalaberong" }, "series": "System 1927-1968", "comments": "Different Obv. and Rev. dies are known.
\r\n
\r\nObverse
\r\nDie 1 - E in  E.VAZ narrow and far from full stop, the first S in ESCUDOS with short tail.
\r\nDie 2 - E in  E.VAZ wide and close to full stop, the first  S in ESCUDOS with short tail.
\r\nDie 3 - E in  E.VAZ wide and close to full stop, the first S in ESCUDOS with long tail.
\r\n\"\"
\r\n
\r\nReverse
\r\nDie A - in the shield in center all 4 escutcheons vertically orientated.
\r\nDie B - in the shield in center side escutcheons orientated to center, details in bold lines.
\r\nDie C - in the shield in center side escutcheons orientated to center, enhanced details with outline.
\r\n\"\"
\r\n
\r\nCombinations
\r\n1+A: 1986.
\r\n1+B: 1987.
\r\n2+C: 1988-1992.
\r\n3+C: 1992-2001.
\r\n
\r\nCorrespondence to Weltmünzkatalog / 20. Jahrhundert: 1901-2000
\r\nSchön#95.1: 1+A.
\r\nSchön#95.2: 1+B, 2+C, 3+C.", - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -91,7 +84,7 @@ "orientation": "coin", "edge": { "description": "Coarsely reeded.", - "picture": "https://en.numista.com/catalogue/photos/portugal/1154-original.jpg", + "picture": "/photos/portugal/1154-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/1154-180.jpg", "picture_copyright": "ZacUK" }, @@ -100,5 +93,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(135.3061224489796,124.89795918367352,119.69387755102039)" } diff --git a/public/coins/portugal/772.json b/public/coins/portugal/772.json index 1f90cc6..4e3ae10 100644 --- a/public/coins/portugal/772.json +++ b/public/coins/portugal/772.json @@ -44,9 +44,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jaime Martins Barata" - ], + "engravers": ["Jaime Martins Barata"], "description": "A ship, boat sailing to the right", "lettering": "REPUBLICA PORTUGUESA\r\n+ 1973 +", "lettering_scripts": [ @@ -55,14 +53,12 @@ } ], "lettering_translation": "Portuguese Republic", - "picture": "https://en.numista.com/catalogue/photos/portugal/3349-original.jpg", + "picture": "/photos/portugal/3349-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3349-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "The coat of arms of Portugal and 4 stars, value below", "lettering": "5$00\r\nMARTINS BARATA DEL. M. NORTE SCULP.", "lettering_scripts": [ @@ -70,15 +66,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3350-original.jpg", + "picture": "/photos/portugal/3350-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3350-180.jpg", "picture_copyright": "Ulmo" }, "series": "System 1969-1980", - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -101,7 +94,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/portugal/5fb22df77aae26.20008971-original.jpg", + "picture": "/photos/portugal/5fb22df77aae26.20008971-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5fb22df77aae26.20008971-180.jpg", "picture_copyright": "Fireberg" }, @@ -110,5 +103,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(153.72340425531914,141.06382978723403,101.27659574468086)" } diff --git a/public/coins/portugal/774.json b/public/coins/portugal/774.json index 3c972e1..dfc3dd6 100644 --- a/public/coins/portugal/774.json +++ b/public/coins/portugal/774.json @@ -44,9 +44,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Jaime Martins Barata" - ], + "engravers": ["Jaime Martins Barata"], "description": "A ship (caravel), sailing to the right", "lettering": "REPUBLICA PORTUGUESA\r\n+ 1985 +", "lettering_scripts": [ @@ -55,14 +53,12 @@ } ], "lettering_translation": "Republic of Portugal", - "picture": "https://en.numista.com/catalogue/photos/portugal/3005-original.jpg", + "picture": "/photos/portugal/3005-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3005-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "The arms of Portugal with the value below", "lettering": "2$50\r\nMARTINS BARATA DEL. M. NORTE SCULP.", "lettering_scripts": [ @@ -70,16 +66,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3006-original.jpg", + "picture": "/photos/portugal/3006-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3006-180.jpg", "picture_copyright": "nalaberong" }, "series": "System 1969-1980", "comments": "\"\"", - "tags": [ - "Coat of Arms", - "Boat or watercraft" - ], + "tags": ["Coat of Arms", "Boat or watercraft"], "references": [ { "catalogue": { @@ -102,7 +95,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/portugal/614c7a879a48a4.48356386-original.jpg", + "picture": "/photos/portugal/614c7a879a48a4.48356386-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/614c7a879a48a4.48356386-180.jpg", "picture_copyright": "Walter_Scott" }, @@ -111,5 +104,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(139.26923076923077,121.61538461538458,115.73076923076921)" } diff --git a/public/coins/portugal/775.json b/public/coins/portugal/775.json index 5651674..f435d75 100644 --- a/public/coins/portugal/775.json +++ b/public/coins/portugal/775.json @@ -44,9 +44,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "Symbol of the Portuguese Republic (five shields each containing five bezants) and the date below.", "lettering": "REPVBLICA PORTVGVESA\r\n✤1979✤", "lettering_scripts": [ @@ -55,14 +53,12 @@ } ], "lettering_translation": "Portuguese Republic\r\n1979", - "picture": "https://en.numista.com/catalogue/photos/portugal/3152-original.jpg", + "picture": "/photos/portugal/3152-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3152-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "Denomination above five wheat ears, engraver's name to the right.", "lettering": "1\r\nESCVDO\r\nM.NORTE", "lettering_scripts": [ @@ -71,7 +67,7 @@ } ], "lettering_translation": "1\r\nEscudo\r\nM.NORTE", - "picture": "https://en.numista.com/catalogue/photos/portugal/3153-original.jpg", + "picture": "/photos/portugal/3153-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3153-180.jpg", "picture_copyright": "nalaberong" }, @@ -99,7 +95,7 @@ "orientation": "coin", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/portugal/614c7995a53d81.50600554-original.jpg", + "picture": "/photos/portugal/614c7995a53d81.50600554-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/614c7995a53d81.50600554-180.jpg", "picture_copyright": "Walter_Scott" }, @@ -108,5 +104,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(176,106,84)" } diff --git a/public/coins/portugal/776.json b/public/coins/portugal/776.json index a92754c..1d6ff42 100644 --- a/public/coins/portugal/776.json +++ b/public/coins/portugal/776.json @@ -44,9 +44,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "Five escutcheons in the form of a cross, each one displaying five bezants and the date below", "lettering": "REPVBLICA PORTVGVESA \r\n1979", "lettering_scripts": [ @@ -55,14 +53,12 @@ } ], "lettering_translation": "Portuguese Republic\r\n1979", - "picture": "https://en.numista.com/catalogue/photos/portugal/3150-original.jpg", + "picture": "/photos/portugal/3150-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3150-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "Five ears of wheat underneath the face value", "lettering": "50\r\nCENTAVOS\r\nMNORTE", "lettering_scripts": [ @@ -70,16 +66,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3151-original.jpg", + "picture": "/photos/portugal/3151-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3151-180.jpg", "picture_copyright": "nalaberong" }, "series": "System 1969-1980", "comments": "In 1973, the British Royal Mint produced 16,444,444 blank planchets for the manufacture of these coins.", - "tags": [ - "Agriculture", - "Cross" - ], + "tags": ["Agriculture", "Cross"], "references": [ { "catalogue": { @@ -102,7 +95,7 @@ "orientation": "coin", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/portugal/6111-original.jpg", + "picture": "/photos/portugal/6111-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/6111-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", @@ -113,5 +106,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(180,110,80)" } diff --git a/public/coins/portugal/907.json b/public/coins/portugal/907.json index 7517b7c..3debe5e 100644 --- a/public/coins/portugal/907.json +++ b/public/coins/portugal/907.json @@ -37,10 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "José Simões de Almeida", - "Alves Domingo Rego" - ], + "engravers": ["José Simões de Almeida", "Alves Domingo Rego"], "description": "Liberty head right, date lower right", "lettering": "REPUBLICA PORTUGUESA - 1965\r\nSIMOÉS REGO GR", "lettering_scripts": [ @@ -50,14 +47,12 @@ ], "unabridged_legend": "Republica Portuguesa - 1965\r\nJosé Simões de Almeida - Alves Domingo Rego", "lettering_translation": "Republic of Portugal - 1965", - "picture": "https://en.numista.com/catalogue/photos/portugal/62ca16b378eeb7.91085143-original.jpg", + "picture": "/photos/portugal/62ca16b378eeb7.91085143-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/62ca16b378eeb7.91085143-180.jpg", "picture_copyright": "nordboutik59" }, "reverse": { - "engravers": [ - "José Simões de Almeida" - ], + "engravers": ["José Simões de Almeida"], "description": "Coat of arms of Portugal within designed circle and wreath above value", "lettering": "1 ESCUDO", "lettering_scripts": [ @@ -65,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/62ca16b3dc4080.89290249-original.jpg", + "picture": "/photos/portugal/62ca16b3dc4080.89290249-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/62ca16b3dc4080.89290249-180.jpg", "picture_copyright": "nordboutik59" }, @@ -138,9 +133,7 @@ "maxYear": 2001 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -163,7 +156,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/portugal/60b00daee86183.96365123-original.jpg", + "picture": "/photos/portugal/60b00daee86183.96365123-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/60b00daee86183.96365123-180.jpg", "picture_copyright": "Bulgaria1999" }, @@ -172,5 +165,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(119.40476190476188,135.59523809523813,119.40476190476188)" } diff --git a/public/coins/portugal/9826.json b/public/coins/portugal/9826.json index 2cf90da..9ee678e 100644 --- a/public/coins/portugal/9826.json +++ b/public/coins/portugal/9826.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Marcelino Norte de Almeida" - ], + "engravers": ["Marcelino Norte de Almeida"], "description": "Shield above denomination", "lettering": "· REPUBLICA PORTUGUESA ·\r\n1$00", "lettering_scripts": [ @@ -48,14 +46,12 @@ } ], "lettering_translation": "Portugese republic", - "picture": "https://en.numista.com/catalogue/photos/portugal/3836-original.jpg", + "picture": "/photos/portugal/3836-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3836-180.jpg", "picture_copyright": "Cyrillius" }, "reverse": { - "engravers": [ - "Dorita Castel-Branco" - ], + "engravers": ["Dorita Castel-Branco"], "description": "Hockey player", "lettering": "82\r\nincm 82\r\nDorita\r\nMUNDIAL HÓQUEI", "lettering_scripts": [ @@ -63,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3837-original.jpg", + "picture": "/photos/portugal/3837-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3837-180.jpg", "picture_copyright": "Cyrillius" }, @@ -104,9 +100,7 @@ "maxYear": 1983 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -129,8 +123,9 @@ "orientation": "coin", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/portugal/3263-original.jpg", + "picture": "/photos/portugal/3263-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3263-180.jpg", "picture_copyright": "Cyrillius" - } + }, + "color": "rgb(152,141,60)" } diff --git a/public/coins/portugal/9834.json b/public/coins/portugal/9834.json index 5a84b66..8b311fb 100644 --- a/public/coins/portugal/9834.json +++ b/public/coins/portugal/9834.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "António Marinho" - ], + "engravers": ["António Marinho"], "description": "Arms of Portugal above value to the left of the design", "lettering": "REPÚBLICA PORTUGUESA\r\n200\r\nESCUDOS\r\n1991", "lettering_scripts": [ @@ -48,14 +46,12 @@ } ], "lettering_translation": "Republic of Portugal\r\n200\r\nEscudos\r\n1991", - "picture": "https://en.numista.com/catalogue/photos/portugal/3411-original.jpg", + "picture": "/photos/portugal/3411-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3411-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "António Marinho" - ], + "engravers": ["António Marinho"], "description": "Head left, map, cross, dates and 1/2 star design", "lettering": "COLOMBO E PORTUGAL\r\n1476\r\n1485", "lettering_scripts": [ @@ -64,7 +60,7 @@ } ], "lettering_translation": "Colombo of Portugal\r\n1476\r\n1485", - "picture": "https://en.numista.com/catalogue/photos/portugal/3412-original.jpg", + "picture": "/photos/portugal/3412-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3412-180.jpg", "picture_copyright": "Ulmo" }, @@ -105,12 +101,7 @@ "maxYear": 1991 } ], - "tags": [ - "Coat of Arms", - "Explorer", - "Map", - "Cross" - ], + "tags": ["Coat of Arms", "Explorer", "Map", "Cross"], "references": [ { "catalogue": { @@ -139,5 +130,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(131.14285714285717,128.7142857142857,123.85714285714285)" } diff --git a/public/coins/portugal/9895.json b/public/coins/portugal/9895.json index e74a5ee..f92acfb 100644 --- a/public/coins/portugal/9895.json +++ b/public/coins/portugal/9895.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Vítor Manuel Fernandes dos Santos" - ], + "engravers": ["Vítor Manuel Fernandes dos Santos"], "description": "The second royal seal of 1142 of Afonso Henriques, the first king of Portugal, is encircled by alternately the seven country's castles and the five coats of arms, which appear an the Portuguese flag, and the letters of the word \"PORTUGAL\", themselves encircled by the twelve stars of Europe", "lettering": "P O R T U G A L\r\nPO RT\r\nVG AL\r\nVS INCM\r\n2 0 0 9", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3481-original.jpg", + "picture": "/photos/portugal/3481-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3481-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -62,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3482-original.jpg", + "picture": "/photos/portugal/3482-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3482-180.jpg", "picture_copyright": "Ulmo" }, @@ -80,9 +76,7 @@ "maxYear": 2007 } ], - "tags": [ - "Map" - ], + "tags": ["Map"], "references": [ { "catalogue": { @@ -105,7 +99,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/portugal/5417-original.jpg", + "picture": "/photos/portugal/5417-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5417-180.jpg", "picture_copyright": "Cyrillius" }, @@ -115,5 +109,6 @@ "name": "Lisbon" } ], - "count": 5 + "count": 5, + "color": "rgb(187.5,172.5,67.49999999999999)" } diff --git a/public/coins/portugal/9896.json b/public/coins/portugal/9896.json index d54a05f..9877fcb 100644 --- a/public/coins/portugal/9896.json +++ b/public/coins/portugal/9896.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "V. M. F. dos Santos" - ], + "engravers": ["V. M. F. dos Santos"], "description": "The second royal seal of 1142 of Afonso Henriques, the first king of Portugal, is encircled by alternately the seven country's castles and the five coats of arms, which appear an the Portuguese flag, and the letters of the word \"PORTUGAL\", themselves encircled by the twelve stars of Europe", "lettering": "P O R T U G A L\r\nPO RT\r\nVG AL\r\nVS INCM\r\n2 0 0 9", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3483-original.jpg", + "picture": "/photos/portugal/3483-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3483-180.jpg", "picture_copyright": "Ulmo" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -62,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3484-original.jpg", + "picture": "/photos/portugal/3484-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3484-180.jpg", "picture_copyright": "Ulmo" }, @@ -80,10 +76,7 @@ "maxYear": 2007 } ], - "tags": [ - "Coat of Arms", - "Map" - ], + "tags": ["Coat of Arms", "Map"], "references": [ { "catalogue": { @@ -99,7 +92,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/portugal/5419-original.jpg", + "picture": "/photos/portugal/5419-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5419-180.jpg", "picture_copyright": "Cyrillius" }, @@ -109,5 +102,6 @@ "name": "Lisbon" } ], - "count": 4 + "count": 4, + "color": "rgb(183.28125,151.40625,71.71875)" } diff --git a/public/coins/portugal/991.json b/public/coins/portugal/991.json index 2f2ac83..0eb881a 100644 --- a/public/coins/portugal/991.json +++ b/public/coins/portugal/991.json @@ -43,10 +43,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "José Simões de Almeida", - "Alves Domingo Rego" - ], + "engravers": ["José Simões de Almeida", "Alves Domingo Rego"], "description": "Allegory of Republic facing right with the country name and date above around the rim.", "lettering": "REPUBLICA PORTUGUESA - 1944\r\nSIMÕES\r\nREGO GR", "lettering_scripts": [ @@ -56,14 +53,12 @@ ], "unabridged_legend": "José Simões de Almeida\r\nAlves Domingo Rego (REGO GR, where GR is the abbreviation for 'gravador', which is Portuguese for engraver)", "lettering_translation": "Portuguese Republic - 1944\r\nSIMÕES REGO GR", - "picture": "https://en.numista.com/catalogue/photos/portugal/3226-original.jpg", + "picture": "/photos/portugal/3226-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3226-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "José Simões de Almeida" - ], + "engravers": ["José Simões de Almeida"], "description": "The Portuguese coat of arms and the denomination below.", "lettering": "50\r\n* CENTAVOS *", "lettering_scripts": [ @@ -71,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/portugal/3227-original.jpg", + "picture": "/photos/portugal/3227-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/3227-180.jpg", "picture_copyright": "nalaberong" }, @@ -112,9 +107,7 @@ "maxYear": 1979 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -137,7 +130,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/portugal/5f9f5135199fb8.56552492-original.jpg", + "picture": "/photos/portugal/5f9f5135199fb8.56552492-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/portugal/5f9f5135199fb8.56552492-180.jpg", "picture_copyright": "Renato Lima" }, @@ -146,5 +139,6 @@ "id": "1337", "name": "Lisbon" } - ] + ], + "color": "rgb(138.0451127819549,124.62406015037591,116.95488721804509)" } diff --git a/public/coins/russia/4580.json b/public/coins/russia/4580.json index 9f517f3..1f9d298 100644 --- a/public/coins/russia/4580.json +++ b/public/coins/russia/4580.json @@ -37,12 +37,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Alexander Baklanov" - ], - "designers": [ - "Alexander Baklanov" - ], + "engravers": ["Alexander Baklanov"], + "designers": ["Alexander Baklanov"], "description": "In the centre — the relief image of Saint George the Warrior on horseback killing a serpent with a spear;\r\n•\tto the right below, under the front hoof of the horse — the Cyrillic letters М (Moscow) or С-П (Saint Petersburg), indicating the mint-producer;\r\n•\tabove from the left to the right — the inscription along the rim: “БАНК РОССИИ” (BANK OF RUSSIA) divided by the figure of Saint George the Warrior;\r\n•\tbelow under the image of the serpent — the year of mintage.", "lettering": "БАНК РОССИИ\r\nМ\r\n2014", "lettering_scripts": [ @@ -51,17 +47,13 @@ } ], "lettering_translation": "Bank of Russia\r\nM", - "picture": "https://en.numista.com/catalogue/photos/russie/6678-original.jpg", + "picture": "/photos/russie/6678-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/russie/6678-180.jpg", "picture_copyright": "Cyrillius" }, "reverse": { - "engravers": [ - "Alexander Baklanov" - ], - "designers": [ - "Alexander Baklanov" - ], + "engravers": ["Alexander Baklanov"], + "designers": ["Alexander Baklanov"], "description": "Slightly to the right of the centre is the denomination of the coin: with the number 50 above“КОПЕЕК” written horizontally at the bottom of the disc and a stylized vegetable ornament in form of two branches below", "lettering": "50\r\nКОПЕЕК", "lettering_scripts": [ @@ -70,7 +62,7 @@ } ], "lettering_translation": "Kopecks", - "picture": "https://en.numista.com/catalogue/photos/russie/6679-original.jpg", + "picture": "/photos/russie/6679-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/russie/6679-180.jpg", "picture_copyright": "Cyrillius" }, @@ -88,10 +80,7 @@ "maxYear": 2006 } ], - "tags": [ - "Fantasy animal", - "Horse or equine" - ], + "tags": ["Fantasy animal", "Horse or equine"], "references": [ { "catalogue": { @@ -114,7 +103,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/russie/5357-original.jpg", + "picture": "/photos/russie/5357-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/russie/5357-180.jpg", "picture_copyright": "Cyrillius" }, @@ -127,5 +116,6 @@ "id": "7", "name": "Saint Petersburg / Leningrad / Petrograd" } - ] + ], + "color": "rgb(181,129,66)" } diff --git a/public/coins/russia/766.json b/public/coins/russia/766.json index 73d4a54..7c60897 100644 --- a/public/coins/russia/766.json +++ b/public/coins/russia/766.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "USSR", - "picture": "https://en.numista.com/catalogue/photos/ancienne_urss/11-original.jpg", + "picture": "/photos/ancienne_urss/11-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/ancienne_urss/11-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -61,7 +61,7 @@ } ], "lettering_translation": "3 Kopecks", - "picture": "https://en.numista.com/catalogue/photos/ancienne_urss/12-original.jpg", + "picture": "/photos/ancienne_urss/12-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/ancienne_urss/12-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -158,9 +158,7 @@ "maxYear": 1991 } ], - "tags": [ - "Hammer and sickle" - ], + "tags": ["Hammer and sickle"], "references": [ { "catalogue": { @@ -183,7 +181,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/ancienne_urss/1127-original.jpg", + "picture": "/photos/ancienne_urss/1127-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/ancienne_urss/1127-180.jpg", "picture_copyright": "Cyrillius" }, @@ -196,5 +194,6 @@ "id": "7", "name": "Saint Petersburg / Leningrad / Petrograd" } - ] + ], + "color": "rgb(173,126,76)" } diff --git a/public/coins/slovakia/5086.json b/public/coins/slovakia/5086.json index d473885..069a78e 100644 --- a/public/coins/slovakia/5086.json +++ b/public/coins/slovakia/5086.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Drahomír Zobek" - ], + "engravers": ["Drahomír Zobek"], "description": "Kriváň, a symbolic mountain in the High Tatras", "lettering": "SLOVENSKO 2017 Z", "lettering_scripts": [ @@ -48,16 +46,14 @@ } ], "lettering_translation": "Slovakia", - "picture": "https://en.numista.com/catalogue/photos/slovaquie/61ff74e03e3057.54397091-original.jpg", + "picture": "/photos/slovaquie/61ff74e03e3057.54397091-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/slovaquie/61ff74e03e3057.54397091-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "View of the Earth with Europe", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -65,17 +61,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/slovaquie/61ff74e15fbaf7.17194714-original.jpg", + "picture": "/photos/slovaquie/61ff74e15fbaf7.17194714-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/slovaquie/61ff74e15fbaf7.17194714-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "New version of the common side seen from 2020 onwards. Main differences:
\r\n - Thicker and shorter numeral
\r\n - Rounded edges of the numeral
\r\n - Thicker font in "EURO CENT"
\r\n - Thicker lines with longer ends outside of stars
\r\n
\r\n\"\"", - "tags": [ - "Map", - "Mountain" - ], + "tags": ["Map", "Mountain"], "references": [ { "catalogue": { @@ -98,7 +91,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/slovaquie/584-original.jpg", + "picture": "/photos/slovaquie/584-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/slovaquie/584-180.jpg", "picture_copyright": "Cyrillius" }, @@ -108,5 +101,6 @@ "name": "Kremnica / Körmöcbánya / Kremnitz" } ], - "count": 1 + "count": 1, + "color": "rgb(169,104,73)" } diff --git a/public/coins/south africa/2903.json b/public/coins/south africa/2903.json index 65bfb54..dd76829 100644 --- a/public/coins/south africa/2903.json +++ b/public/coins/south africa/2903.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Arthur Sutherland" - ], + "engravers": ["Arthur Sutherland"], "description": "South African coat of arms, surrounded by Zulu legend", "lettering": "iNingizimu Afrika 2020\r\nǃKE E: ǀXARRA ǁKE\r\nALS", "lettering_scripts": [ @@ -47,14 +45,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/afrique_du_sud/60356279a935c3.92187431-original.jpg", + "picture": "/photos/afrique_du_sud/60356279a935c3.92187431-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/afrique_du_sud/60356279a935c3.92187431-180.jpg", "picture_copyright": "Robert Cronjé" }, "reverse": { - "engravers": [ - "Susan Erasmus" - ], + "engravers": ["Susan Erasmus"], "description": "King Protea flower with denomination at upper-right", "lettering": "20c SE", "lettering_scripts": [ @@ -62,15 +58,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/afrique_du_sud/6035627a3fb917.34022941-original.jpg", + "picture": "/photos/afrique_du_sud/6035627a3fb917.34022941-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/afrique_du_sud/6035627a3fb917.34022941-180.jpg", "picture_copyright": "Robert Cronjé" }, "comments": "Legends in the 11 Official Languages of the Republic of South Africa:
\r\nAfrikaans: Suid-Afrika
\r\nEnglish: South Africa
\r\nSesotho and Sepedi: Afrika Borwa
\r\nTswana: Aforika Borwa
\r\nXhosa: uMzantsi Afrika
\r\nZulu: iNingizimu Afrika
\r\nNdebele: iSewula frika
\r\nVenda: Afurika Tshipembe
\r\nsiSwati: Ningizimu Afrika
\r\nTsonga: Afrika Dzonga", - "tags": [ - "Coat of Arms", - "Flower" - ], + "tags": ["Coat of Arms", "Flower"], "references": [ { "catalogue": { @@ -100,7 +93,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/afrique_du_sud/1732-original.jpg", + "picture": "/photos/afrique_du_sud/1732-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/afrique_du_sud/1732-180.jpg", "picture_copyright": "Cyrillius" }, @@ -109,5 +102,6 @@ "id": "1300", "name": "South African Mint" } - ] + ], + "color": "rgb(200,164,116)" } diff --git a/public/coins/spain/10854.json b/public/coins/spain/10854.json index eaa12a1..c4383d4 100644 --- a/public/coins/spain/10854.json +++ b/public/coins/spain/10854.json @@ -50,9 +50,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Garcilaso Rollan" - ], + "engravers": ["Garcilaso Rollan"], "description": "The cathedral of Santiago de Compostela, a jewel of Spanish Romanesque architecture and one of the most famous pilgrimage destinations in the world, is encircled by the lettering \"ESPAÑA\" (Spain), the royal monogram and the twelve stars of Europe", "lettering": "ESPAÑA 2010 M", "lettering_scripts": [ @@ -61,16 +59,14 @@ } ], "lettering_translation": "Spain", - "picture": "https://en.numista.com/catalogue/photos/espagne/61ff754bb64b05.15685511-original.jpg", + "picture": "/photos/espagne/61ff754bb64b05.15685511-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/61ff754bb64b05.15685511-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 \r\nEURO \r\nCENT \r\nLL", "lettering_scripts": [ @@ -78,7 +74,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/61ff754d067f05.21439227-original.jpg", + "picture": "/photos/espagne/61ff754d067f05.21439227-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/61ff754d067f05.21439227-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -98,11 +94,7 @@ "maxYear": 2009 } ], - "tags": [ - "Religious building", - "Map", - "Globe" - ], + "tags": ["Religious building", "Map", "Globe"], "references": [ { "catalogue": { @@ -125,7 +117,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/espagne/3368-original.jpg", + "picture": "/photos/espagne/3368-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/3368-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +127,6 @@ "name": "Royal Mint of Spain" } ], - "count": 7 + "count": 7, + "color": "rgb(204,116,52)" } diff --git a/public/coins/spain/10856.json b/public/coins/spain/10856.json index 7b55c88..ed56cb2 100644 --- a/public/coins/spain/10856.json +++ b/public/coins/spain/10856.json @@ -50,9 +50,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Garcilaso Rollán" - ], + "engravers": ["Garcilaso Rollán"], "description": "The cathedral of Santiago de Compostela, a jewel of Spanish Romanesque architecture and one of the most famous pilgrimage destinations in the world, is encircled by the lettering \"ESPAÑA\" (Spain), the royal monogram and the twelve stars of Europe", "lettering": "ESPAÑA 2010 M", "lettering_scripts": [ @@ -61,16 +59,14 @@ } ], "lettering_translation": "Spain 2010 M", - "picture": "https://en.numista.com/catalogue/photos/espagne/62729515dfc227.81121665-original.jpg", + "picture": "/photos/espagne/62729515dfc227.81121665-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62729515dfc227.81121665-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -78,7 +74,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/6277dca7361d70.47033965-original.jpg", + "picture": "/photos/espagne/6277dca7361d70.47033965-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/6277dca7361d70.47033965-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -98,11 +94,7 @@ "maxYear": 2009 } ], - "tags": [ - "Religious building", - "Map", - "Globe" - ], + "tags": ["Religious building", "Map", "Globe"], "references": [ { "catalogue": { @@ -125,7 +117,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/espagne/3371-original.jpg", + "picture": "/photos/espagne/3371-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/3371-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +127,6 @@ "name": "Royal Mint of Spain" } ], - "count": 19 + "count": 19, + "color": "rgb(204,116,52)" } diff --git a/public/coins/spain/2374.json b/public/coins/spain/2374.json index 3578773..eb33ed8 100644 --- a/public/coins/spain/2374.json +++ b/public/coins/spain/2374.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Portrait of King Juan Carlos facing left. Text in Spanish surrounding. 'Mint year' below.", "lettering": "JUAN CARLOS REY DE ESPAÑA\r\n· 1975 ·", "lettering_scripts": [ @@ -53,14 +51,12 @@ } ], "lettering_translation": "JUAN CARLOS KING OF SPAIN\n· 1975 ·", - "picture": "https://en.numista.com/catalogue/photos/espagne/5019-original.jpg", + "picture": "/photos/espagne/5019-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5019-180.jpg", "picture_copyright": "Chilian" }, "reverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Coat of arms of Spain flanked by face value. Two 5-pointed stars inscribed with the actual mint year.", "lettering": "100\r\n19 76 \r\nPTAS", "lettering_scripts": [ @@ -68,13 +64,11 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/5020-original.jpg", + "picture": "/photos/espagne/5020-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5020-180.jpg", "picture_copyright": "Chilian" }, - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -97,7 +91,7 @@ } ], "lettering_translation": "One, great and free", - "picture": "https://en.numista.com/catalogue/photos/espagne/3410-original.jpg", + "picture": "/photos/espagne/3410-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/3410-180.jpg", "picture_copyright": "Cyrillius" }, @@ -106,5 +100,6 @@ "id": "24", "name": "Royal Mint of Spain" } - ] + ], + "color": "rgb(181.75531914893617,138.35106382978722,73.24468085106383)" } diff --git a/public/coins/spain/2736.json b/public/coins/spain/2736.json index 9716eb6..c3809fe 100644 --- a/public/coins/spain/2736.json +++ b/public/coins/spain/2736.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Portrait facing left, lettering in Spanish around outside, date below", "lettering": "JUAN CARLOS I REY DE ESPAÑA \r\n· 1975 ·", "lettering_scripts": [ @@ -53,15 +51,13 @@ } ], "lettering_translation": "Juan Carlos I King of Spain\n· 1975 ·", - "picture": "https://en.numista.com/catalogue/photos/espagne/2292-original.jpg", + "picture": "/photos/espagne/2292-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/2292-180.jpg", "picture_copyright": "Union Latine", "picture_copyright_url": "https://web.archive.org/web/20190818001417/http://www.union-latine.com/" }, "reverse": { - "engravers": [ - "Francisco Martínez Tornero" - ], + "engravers": ["Francisco Martínez Tornero"], "description": "Large crown at top, value abbreviated below, date (last two numerals) at bottom within star", "lettering": "25 PTAS\r\n79", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/2293-original.jpg", + "picture": "/photos/espagne/2293-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/2293-180.jpg", "picture_copyright": "Union Latine", "picture_copyright_url": "https://web.archive.org/web/20190818001417/http://www.union-latine.com/" @@ -117,7 +113,7 @@ } ], "lettering_translation": "One, great and free", - "picture": "https://en.numista.com/catalogue/photos/espagne/986-original.jpg", + "picture": "/photos/espagne/986-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/986-180.jpg", "picture_copyright": "ZacUK" }, @@ -126,5 +122,6 @@ "id": "24", "name": "Royal Mint of Spain" } - ] + ], + "color": "rgb(155.21739130434784,129.34782608695653,99.78260869565216)" } diff --git a/public/coins/spain/3200.json b/public/coins/spain/3200.json index 7663807..244dee2 100644 --- a/public/coins/spain/3200.json +++ b/public/coins/spain/3200.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Portrait of king Juan Carlos I of Spain facing right and the series date below", "lettering": "JUAN CARLOS I REY DE ESPANA\r\n· 1975 ·", "lettering_scripts": [ @@ -53,15 +51,13 @@ } ], "lettering_translation": "Juan Carlos I King of Spain\n1975", - "picture": "https://en.numista.com/catalogue/photos/espagne/2296-original.jpg", + "picture": "/photos/espagne/2296-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/2296-180.jpg", "picture_copyright": "Union Latine", "picture_copyright_url": "https://web.archive.org/web/20190818001417/http://www.union-latine.com/" }, "reverse": { - "engravers": [ - "Francisco Martínez Tornero" - ], + "engravers": ["Francisco Martínez Tornero"], "description": "The personal coat of arms of King Juan Carlos I dividing the denomination with the actual date in the stars flanking the number \"50\"", "lettering": "19 50 78 PTAS", "lettering_scripts": [ @@ -70,7 +66,7 @@ } ], "lettering_translation": "1978 50 Pesetas", - "picture": "https://en.numista.com/catalogue/photos/espagne/2297-original.jpg", + "picture": "/photos/espagne/2297-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/2297-180.jpg", "picture_copyright": "Union Latine", "picture_copyright_url": "https://web.archive.org/web/20190818001417/http://www.union-latine.com/" @@ -104,7 +100,7 @@ } ], "lettering_translation": "One, great and free", - "picture": "https://en.numista.com/catalogue/photos/espagne/3409-original.jpg", + "picture": "/photos/espagne/3409-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/3409-180.jpg", "picture_copyright": "Cyrillius" }, @@ -113,5 +109,6 @@ "id": "24", "name": "Royal Mint of Spain" } - ] + ], + "color": "rgb(155.3448275862069,134.82758620689657,99.65517241379312)" } diff --git a/public/coins/spain/3372.json b/public/coins/spain/3372.json index d181be1..7a94d21 100644 --- a/public/coins/spain/3372.json +++ b/public/coins/spain/3372.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Begoña Castellanos García" - ], + "engravers": ["Begoña Castellanos García"], "description": "A portrait of Miguel de Cervantes, the father of Spanish literature, facing left with his name, a quill, the country name and the royal monogram to the left, encircled by the twelve stars of Europe, of which four are bound by a band", "lettering": "ESPAÑA \r\nCervantes\r\nM\r\n2009", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Spain\r\nCervantes\r\nM\r\n2009", - "picture": "https://en.numista.com/catalogue/photos/espagne/62bc4f386714a1.92979482-original.jpg", + "picture": "/photos/espagne/62bc4f386714a1.92979482-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62bc4f386714a1.92979482-180.jpg", "picture_copyright": "RuibaiK", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "10 \r\nLL\r\nEURO \r\nCENT", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/62bc4f390c82c6.45871979-original.jpg", + "picture": "/photos/espagne/62bc4f390c82c6.45871979-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62bc4f390c82c6.45871979-180.jpg", "picture_copyright": "RuibaiK", "picture_license_name": "CC BY-NC", @@ -99,11 +95,7 @@ "maxYear": 2023 } ], - "tags": [ - "Literature", - "Map", - "Mustache" - ], + "tags": ["Literature", "Map", "Mustache"], "references": [ { "catalogue": { @@ -126,7 +118,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/espagne/4251-original.jpg", + "picture": "/photos/espagne/4251-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/4251-180.jpg", "picture_copyright": "Cyrillius" }, @@ -136,5 +128,6 @@ "name": "Royal Mint of Spain" } ], - "count": 2 + "count": 2, + "color": "rgb(178,138,73)" } diff --git a/public/coins/spain/6361.json b/public/coins/spain/6361.json index 7986d2b..b8234e5 100644 --- a/public/coins/spain/6361.json +++ b/public/coins/spain/6361.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Begoña Castellanos García" - ], + "engravers": ["Begoña Castellanos García"], "description": "A portrait of Miguel de Cervantes, the father of Spanish literature, is accompanied withn his name, a quill, the lettering \"ESPAÑA\" (Spain) and the royal monogram an is encircled by the twelve stars of Europe of whom four are bound by a band", "lettering": "ESPAÑA\r\nCervantes\r\nM\r\n2007", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Spain\r\nCervantes\r\nM\r\n2007", - "picture": "https://en.numista.com/catalogue/photos/espagne/6272885d0a7904.76191126-original.jpg", + "picture": "/photos/espagne/6272885d0a7904.76191126-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/6272885d0a7904.76191126-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, shows the European continent without borders", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/6272885e317c58.81031263-original.jpg", + "picture": "/photos/espagne/6272885e317c58.81031263-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/6272885e317c58.81031263-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -99,10 +95,7 @@ "maxYear": 2023 } ], - "tags": [ - "Literature", - "Map" - ], + "tags": ["Literature", "Map"], "references": [ { "catalogue": { @@ -125,7 +118,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/espagne/4264-original.jpg", + "picture": "/photos/espagne/4264-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/4264-180.jpg", "picture_copyright": "Cyrillius" }, @@ -135,5 +128,6 @@ "name": "Royal Mint of Spain" } ], - "count": 2 + "count": 2, + "color": "rgb(196,140,60)" } diff --git a/public/coins/spain/7576.json b/public/coins/spain/7576.json index 8c3d08b..4d2ad99 100644 --- a/public/coins/spain/7576.json +++ b/public/coins/spain/7576.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Head of Juan Carlos I facing left, the series date below, and his title around the rim", "lettering": "JUAN CARLOS I REY DE ESPAÑA\r\n*1975*", "lettering_scripts": [ @@ -53,14 +51,12 @@ } ], "lettering_translation": "Juan Carlos I King of Spain\n1975", - "picture": "https://en.numista.com/catalogue/photos/espagne/5591-original.jpg", + "picture": "/photos/espagne/5591-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5591-180.jpg", "picture_copyright": "Joseph Kunnappally" }, "reverse": { - "engravers": [ - "Manuel Martínez Tornero" - ], + "engravers": ["Manuel Martínez Tornero"], "description": "Spike divides value", "lettering": "50 CTS", "lettering_scripts": [ @@ -69,7 +65,7 @@ } ], "lettering_translation": "50 Centimos", - "picture": "https://en.numista.com/catalogue/photos/espagne/5592-original.jpg", + "picture": "/photos/espagne/5592-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5592-180.jpg", "picture_copyright": "Joseph Kunnappally" }, @@ -101,5 +97,6 @@ "id": "24", "name": "Royal Mint of Spain" } - ] + ], + "color": "rgb(154.70000000000002,127.5,100.3)" } diff --git a/public/coins/spain/782.json b/public/coins/spain/782.json index 6ff3dbc..c418217 100644 --- a/public/coins/spain/782.json +++ b/public/coins/spain/782.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Portrait in left profile of Juan Carlos I", "lettering": "JUAN CARLOS I REY DE ESPAÑA\r\n1975", "lettering_scripts": [ @@ -53,15 +51,13 @@ } ], "lettering_translation": "JUAN CARLOS I KING OF SPAIN\n1975", - "picture": "https://en.numista.com/catalogue/photos/espagne/5672-original.jpg", + "picture": "/photos/espagne/5672-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5672-180.jpg", "picture_copyright": "Union Latine", "picture_copyright_url": "https://web.archive.org/web/20190818001417/http://www.union-latine.com/" }, "reverse": { - "engravers": [ - "Francisco Martínez Tornero" - ], + "engravers": ["Francisco Martínez Tornero"], "description": "Face value and personal coat of arms of King Juan Carlos I", "lettering": "5 PTAS\r\n79", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/5673-original.jpg", + "picture": "/photos/espagne/5673-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5673-180.jpg", "picture_copyright": "Union Latine", "picture_copyright_url": "https://web.archive.org/web/20190818001417/http://www.union-latine.com/" @@ -117,7 +113,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/espagne/5f9f50451e8940.33466524-original.jpg", + "picture": "/photos/espagne/5f9f50451e8940.33466524-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5f9f50451e8940.33466524-180.jpg", "picture_copyright": "Renato Lima" }, @@ -126,5 +122,6 @@ "id": "24", "name": "Royal Mint of Spain" } - ] + ], + "color": "rgb(173.20754716981133,134.71698113207546,81.79245283018867)" } diff --git a/public/coins/spain/787.json b/public/coins/spain/787.json index ba9b405..e1f1e92 100644 --- a/public/coins/spain/787.json +++ b/public/coins/spain/787.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "Juan Carlos I facing left with the series date below", "lettering": "JUAN CARLOS I REY DE ESPAÑA\r\n1975", "lettering_scripts": [ @@ -53,16 +51,14 @@ } ], "lettering_translation": "Juan Carlos I King of Spain", - "picture": "https://en.numista.com/catalogue/photos/espagne/625cb74a00d989.64463352-original.jpg", + "picture": "/photos/espagne/625cb74a00d989.64463352-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/625cb74a00d989.64463352-180.jpg", "picture_copyright": "EZE711CBA", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Manuel Marín Jimeno" - ], + "engravers": ["Manuel Marín Jimeno"], "description": "The arms of Spain and the real date is written in the stars on each side of the word \"UNA\", part of the denomination divided on both sides", "lettering": "UNA PESETA 1977\r\nUNA GRANDE LIBRE\r\nPLUS ULTRA", "lettering_scripts": [ @@ -71,7 +67,7 @@ } ], "lettering_translation": "One Peseta 1977\nOne Great Free\nFurther Beyond", - "picture": "https://en.numista.com/catalogue/photos/espagne/625cb74aa10319.60902286-original.jpg", + "picture": "/photos/espagne/625cb74aa10319.60902286-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/625cb74aa10319.60902286-180.jpg", "picture_copyright": "EZE711CBA", "picture_license_name": "CC BY-NC-SA", @@ -102,9 +98,7 @@ "maxYear": 1975 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -127,7 +121,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/espagne/5f9f4a12184be9.80826467-original.jpg", + "picture": "/photos/espagne/5f9f4a12184be9.80826467-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/5f9f4a12184be9.80826467-180.jpg", "picture_copyright": "Renato Lima" }, @@ -144,5 +138,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(190,175,70)" } diff --git a/public/coins/spain/81.json b/public/coins/spain/81.json index 131f18d..cd27efb 100644 --- a/public/coins/spain/81.json +++ b/public/coins/spain/81.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Garcilaso Rollán" - ], + "engravers": ["Garcilaso Rollán"], "description": "The cathedral of Santiago de Compostela, a jewel of Spanish Romanesque architecture and one of the most famous pilgrimage destinations in the world, is encircled by the lettering \"ESPAÑA\" (Spain), the royal monogram and the twelve stars of Europe of whom five are bound by a band.", "lettering": "ESPAÑA 2002 M", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Spain 2002 M", - "picture": "https://en.numista.com/catalogue/photos/espagne/62c135e1117164.34185253-original.jpg", + "picture": "/photos/espagne/62c135e1117164.34185253-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62c135e1117164.34185253-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "1 EURO CENT LL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/62c135e28b0459.19800323-original.jpg", + "picture": "/photos/espagne/62c135e28b0459.19800323-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62c135e28b0459.19800323-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -88,11 +84,7 @@ "maxYear": 2023 } ], - "tags": [ - "Religious building", - "Map", - "Globe" - ], + "tags": ["Religious building", "Map", "Globe"], "references": [ { "catalogue": { @@ -115,7 +107,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/espagne/3370-original.jpg", + "picture": "/photos/espagne/3370-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/3370-180.jpg", "picture_copyright": "Cyrillius" }, @@ -125,5 +117,6 @@ "name": "Royal Mint of Spain" } ], - "count": 48 + "count": 48, + "color": "rgb(196,116,60)" } diff --git a/public/coins/spain/83.json b/public/coins/spain/83.json index 826a636..9e8d73c 100644 --- a/public/coins/spain/83.json +++ b/public/coins/spain/83.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Garcilaso Rollán" - ], + "engravers": ["Garcilaso Rollán"], "description": "The cathedral of Santiago de Compostela, a jewel of Spanish Romanesque architecture and one of the most famous pilgrimage destinations in the world, is encircled by the lettering \"ESPAÑA\" (Spain), the royal monogram and the twelve stars of Europe of whom five are bound by a band", "lettering": "ESPAÑA 2002 M", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Spain 2002", - "picture": "https://en.numista.com/catalogue/photos/espagne/61ff71a6cc21e1.93410910-original.jpg", + "picture": "/photos/espagne/61ff71a6cc21e1.93410910-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/61ff71a6cc21e1.93410910-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A globe, next to the face value, shows Europe in relation to Africa and Asia", "lettering": "5 EURO CENT LL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/61ff71a7d756a3.00233374-original.jpg", + "picture": "/photos/espagne/61ff71a7d756a3.00233374-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/61ff71a7d756a3.00233374-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -88,11 +84,7 @@ "maxYear": 2023 } ], - "tags": [ - "Religious building", - "Map", - "Globe" - ], + "tags": ["Religious building", "Map", "Globe"], "references": [ { "catalogue": { @@ -115,7 +107,7 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/espagne/3369-original.jpg", + "picture": "/photos/espagne/3369-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/3369-180.jpg", "picture_copyright": "Cyrillius" }, @@ -125,5 +117,6 @@ "name": "Royal Mint of Spain" } ], - "count": 38 + "count": 38, + "color": "rgb(196,116,60)" } diff --git a/public/coins/spain/84.json b/public/coins/spain/84.json index cacc457..9a0bf5a 100644 --- a/public/coins/spain/84.json +++ b/public/coins/spain/84.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Begoña Castellanos García" - ], + "engravers": ["Begoña Castellanos García"], "description": "A portrait of Miguel de Cervantes, the father of Spanish literature, is accompanied with his name, a quill, the lettering \"ESPAÑA\" (Spain) and the royal monogram an is encircled by the twelve stars of Europe of whom four are bound by a band", "lettering": "ESPAÑA \r\nCervantes\r\n1999 M", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Spain\r\nCervantes\r\n1999 M", - "picture": "https://en.numista.com/catalogue/photos/espagne/62723193439340.67448024-original.jpg", + "picture": "/photos/espagne/62723193439340.67448024-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62723193439340.67448024-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "10 EURO CENT LL", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/62be9c7ab0d005.64602918-original.jpg", + "picture": "/photos/espagne/62be9c7ab0d005.64602918-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/62be9c7ab0d005.64602918-180.jpg", "picture_copyright": "StanCollects", "picture_license_name": "CC BY-NC", @@ -99,11 +95,7 @@ "maxYear": 2023 } ], - "tags": [ - "Literature", - "Map", - "Mustache" - ], + "tags": ["Literature", "Map", "Mustache"], "references": [ { "catalogue": { @@ -126,7 +118,7 @@ "orientation": "medal", "edge": { "description": "Indented", - "picture": "https://en.numista.com/catalogue/photos/espagne/4252-original.jpg", + "picture": "/photos/espagne/4252-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/4252-180.jpg", "picture_copyright": "Cyrillius" }, @@ -136,5 +128,6 @@ "name": "Royal Mint of Spain" } ], - "count": 6 + "count": 6, + "color": "rgb(156,116,68)" } diff --git a/public/coins/spain/85.json b/public/coins/spain/85.json index ac300f9..ca951dc 100644 --- a/public/coins/spain/85.json +++ b/public/coins/spain/85.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Begoña Castellanos García" - ], + "engravers": ["Begoña Castellanos García"], "description": "A portrait of Miguel de Cervantes, the father of Spanish literature, is accompanied with his name, a quill, the lettering \"ESPAÑA\" (Spain) and the mintmark for the Madrid Mint is encircled by the twelve stars of Europe of which four are bound by a band", "lettering": "ESPAÑA\r\nCervantes\r\nM\r\n1999", "lettering_scripts": [ @@ -52,16 +50,14 @@ } ], "lettering_translation": "Spain\r\nCervantes\r\nM\r\n2001", - "picture": "https://en.numista.com/catalogue/photos/espagne/627287312bb885.13329376-original.jpg", + "picture": "/photos/espagne/627287312bb885.13329376-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/627287312bb885.13329376-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Luc Luycx" - ], + "engravers": ["Luc Luycx"], "description": "A map, next to the face value, symbolizes the gathering of the fifteen nations of the European Union", "lettering": "20\r\nLL\r\nEURO\r\nCENT", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/espagne/627287323c35e4.15853079-original.jpg", + "picture": "/photos/espagne/627287323c35e4.15853079-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/627287323c35e4.15853079-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -100,10 +96,7 @@ "maxYear": 2023 } ], - "tags": [ - "Literature", - "Map" - ], + "tags": ["Literature", "Map"], "references": [ { "catalogue": { @@ -126,7 +119,7 @@ "orientation": "medal", "edge": { "description": "Smooth with seven indentations (\"Spanish flower\")", - "picture": "https://en.numista.com/catalogue/photos/espagne/4265-original.jpg", + "picture": "/photos/espagne/4265-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/espagne/4265-180.jpg", "picture_copyright": "Cyrillius" }, @@ -136,5 +129,6 @@ "name": "Royal Mint of Spain" } ], - "count": 2 + "count": 2, + "color": "rgb(198,140,84)" } diff --git a/public/coins/sweden/6926.json b/public/coins/sweden/6926.json index 2900c1b..e52ad91 100644 --- a/public/coins/sweden/6926.json +++ b/public/coins/sweden/6926.json @@ -41,10 +41,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Ernst Nordin", - "Marita Norin" - ], + "designers": ["Ernst Nordin", "Marita Norin"], "description": "Head of King Carl XVI Gustaf of Sweden facing left, and the artist's initials below and the date within the legend that surrounds around the rim", "lettering": "CARL XVI GUSTAF SVERIGES KONUNG\r\n2005\r\nEN", "lettering_scripts": [ @@ -53,14 +50,11 @@ } ], "lettering_translation": "Carl XVI Gustaf King of Sweden\r\n2005\r\nEN", - "picture": "https://en.numista.com/catalogue/photos/suede/2000-original.jpg", + "picture": "/photos/suede/2000-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suede/2000-180.jpg" }, "reverse": { - "designers": [ - "Ernst Norin", - "Marita Norin" - ], + "designers": ["Ernst Norin", "Marita Norin"], "description": "Three crowns superimposed by value divides mint official's mark at left and the first letter in the surname of the Governor of the Central bank at right. Above a motto.", "lettering": "FÖR SVERIGE\r\n- I TIDEN\r\nE 10 H\r\nKRONOR", "lettering_scripts": [ @@ -69,13 +63,11 @@ } ], "lettering_translation": "For Sweden\r\n- With the Time\r\nE 10 H\r\nKronor", - "picture": "https://en.numista.com/catalogue/photos/suede/2001-original.jpg", + "picture": "/photos/suede/2001-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suede/2001-180.jpg" }, "comments": "Varieties exist
\r\nObverse
\r\nDie 1 - features smaller: effigy 12.1 mm, outer lettering diameter 16.7 mm, short numerals in date.
\r\nDie 2 - features larger: effigy 12.7 mm, outer lettering diameter 17.2 mm, short numerals in date.
\r\nDie 3 - features smaller, bolder and ruder, short numerals in date.
\r\nDie 4 - features mixed: effigy 12.7 mm, outer lettering diameter 16.7 mm, short numerals in date.
\r\nDie 5 - tall numerals in date, big diamonds.
\r\nDie 6 - tall numerals in date, small diamonds.
\r\nOn the photo from left to right: die 2, die 1, die 4.
\r\n\"\"
\r\ndie 3
\r\n\"\"
\r\n
\r\nReverse E B
\r\nDie A - superimposition of crowns is lower, the bottom crown superimposed on numeral 1 concavely.
\r\nDie B - the superimposition of crowns is higher, the bottom crown superimposed on numeral 1 convexly. This style was in use until 2009.
\r\n\"\"
\r\n
\r\nReverse E SI
\r\nDie A - wide lettering such as D in TIDEN, SI initials, both O in KRONOR slightly rotated counterclockwise.
\r\n
\r\nDie B - narrow lettering such as D in TIDEN, SI initials, both O in KRONOR noticeably rotated counterclockwise.
\r\n\"\"
\r\n
\r\nCombinations
\r\n1+A 2001 E B
\r\n2+B 2002 E B
\r\n2 2003 E H
\r\n3 2004 E H
\r\n1 2005 E H
\r\n4 2005 E H
\r\n5+A 2006 E SI
\r\n6+B 2007 E SI
\r\n5 2008 S SI
\r\n5 2009 S SI", - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -98,7 +90,7 @@ "orientation": "medal", "edge": { "description": "Smooth and reeded alternating: 4 reeded segments with 8 grooves each.", - "picture": "https://en.numista.com/catalogue/photos/suede/1885-original.jpg", + "picture": "/photos/suede/1885-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suede/1885-180.jpg", "picture_copyright": "Cyrillius" }, @@ -107,5 +99,6 @@ "id": "4665", "name": "Myntverket" } - ] + ], + "color": "rgb(176,150,75)" } diff --git a/public/coins/switzerland/171.json b/public/coins/switzerland/171.json index 0d9e09f..fbc4d3d 100644 --- a/public/coins/switzerland/171.json +++ b/public/coins/switzerland/171.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Karl Schwenzer" - ], + "designers": ["Karl Schwenzer"], "description": "Head of Libertas (Roman goddess of liberty) facing right, with braided hair tied with ribbon, and wearing tiara.", "lettering": "CONFŒDERATIO HELVETICA\r\nLIBERTAS\r\n᛭ 2017 ᛭", "lettering_scripts": [ @@ -50,16 +48,14 @@ ], "unabridged_legend": "Confoederatio Helvetica", "lettering_translation": "Swiss Confederation\r\nLiberty", - "picture": "https://en.numista.com/catalogue/photos/suisse/5f9f2db303dd07.21719076-original.jpg", + "picture": "/photos/suisse/5f9f2db303dd07.21719076-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/5f9f2db303dd07.21719076-180.jpg", "picture_copyright": "stratocaster", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "designers": [ - "Karl Friedrich Voigt" - ], + "designers": ["Karl Friedrich Voigt"], "description": "Wreath formed of two branches of grape vine bearing three bunches of grapes each and bound with a ribbon below.", "lettering": "5\r\nB", "lettering_scripts": [ @@ -67,7 +63,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/suisse/5f9f2db6937d19.06564382-original.jpg", + "picture": "/photos/suisse/5f9f2db6937d19.06564382-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/5f9f2db6937d19.06564382-180.jpg", "picture_copyright": "stratocaster", "picture_license_name": "CC BY-NC-SA", @@ -110,10 +106,7 @@ "maxYear": 1941 } ], - "tags": [ - "Allegory", - "Wreath" - ], + "tags": ["Allegory", "Wreath"], "references": [ { "catalogue": { @@ -157,7 +150,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/suisse/5f9f2db8d69809.66838809-original.jpg", + "picture": "/photos/suisse/5f9f2db8d69809.66838809-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/5f9f2db8d69809.66838809-180.jpg", "picture_copyright": "stratocaster", "picture_license_name": "CC BY-NC-SA", @@ -168,5 +161,6 @@ "id": "247", "name": "Bern" } - ] + ], + "color": "rgb(196,156,84)" } diff --git a/public/coins/switzerland/173.json b/public/coins/switzerland/173.json index d408669..89f6f1f 100644 --- a/public/coins/switzerland/173.json +++ b/public/coins/switzerland/173.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Karl Schwenzer" - ], + "designers": ["Karl Schwenzer"], "description": "Head of Libertas (Roman goddess of liberty) facing right, with braided hair tied with ribbon and wearing tiara.", "lettering": "CONFŒDERATIO HELVETICA \r\n⸭ 1881 ⸭\r\nLIBERTAS", "lettering_scripts": [ @@ -48,15 +46,13 @@ } ], "lettering_translation": "Swiss Confederation", - "picture": "https://en.numista.com/catalogue/photos/suisse/5f32d311e60728.02240447-original.jpg", + "picture": "/photos/suisse/5f32d311e60728.02240447-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/5f32d311e60728.02240447-180.jpg", "picture_copyright": "Tauler & Fau Subastas", "picture_copyright_url": "https://www.tauleryfau.com/" }, "reverse": { - "designers": [ - "Karl Friedrich Voigt" - ], + "designers": ["Karl Friedrich Voigt"], "description": "Wreath formed of two oak branches with acorns tied with a ribbon below.", "lettering": "10\r\nB", "lettering_scripts": [ @@ -64,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/suisse/5f32d312709818.43603625-original.jpg", + "picture": "/photos/suisse/5f32d312709818.43603625-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/5f32d312709818.43603625-180.jpg", "picture_copyright": "Tauler & Fau Subastas", "picture_copyright_url": "https://www.tauleryfau.com/" @@ -95,9 +91,7 @@ "maxYear": 1939 } ], - "tags": [ - "Wreath" - ], + "tags": ["Wreath"], "references": [ { "catalogue": { @@ -141,7 +135,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/suisse/5f9f2f052890a9.75234060-original.jpg", + "picture": "/photos/suisse/5f9f2f052890a9.75234060-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/5f9f2f052890a9.75234060-180.jpg", "picture_copyright": "stratocaster", "picture_license_name": "CC BY-NC-SA", @@ -152,5 +146,6 @@ "id": "247", "name": "Bern" } - ] + ], + "color": "rgb(151.78571428571428,135.59523809523807,103.21428571428572)" } diff --git a/public/coins/switzerland/178.json b/public/coins/switzerland/178.json index 9911e2d..b3464f3 100644 --- a/public/coins/switzerland/178.json +++ b/public/coins/switzerland/178.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Karl Schwenzer" - ], + "designers": ["Karl Schwenzer"], "description": "Head of Libertas (Roman goddess of liberty) facing right, with braided hair tied with ribbon and wearing tiara.", "lettering": "CONFŒDERATIO HELVETICA \r\nLIBERTAS\r\n⸭ 1944 ⸭", "lettering_scripts": [ @@ -49,15 +47,13 @@ } ], "lettering_translation": "Swiss Confederation", - "picture": "https://en.numista.com/catalogue/photos/suisse/60439aa723b836.65893076-original.jpg", + "picture": "/photos/suisse/60439aa723b836.65893076-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/60439aa723b836.65893076-180.jpg", "picture_copyright": "Sincona AG", "picture_copyright_url": "https://www.sincona.com/" }, "reverse": { - "designers": [ - "Karl Friedrich Voigt" - ], + "designers": ["Karl Friedrich Voigt"], "description": "Wreath formed of two alpine rose springs with flowers tied with a ribbon below.", "lettering": "20\r\nB", "lettering_scripts": [ @@ -65,7 +61,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/suisse/60439aa782ca70.60129588-original.jpg", + "picture": "/photos/suisse/60439aa782ca70.60129588-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/60439aa782ca70.60129588-180.jpg", "picture_copyright": "Sincona AG", "picture_copyright_url": "https://www.sincona.com/" @@ -85,10 +81,7 @@ "maxYear": 1938 } ], - "tags": [ - "Mythology", - "Wreath" - ], + "tags": ["Mythology", "Wreath"], "references": [ { "catalogue": { @@ -132,7 +125,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/suisse/1534-original.jpg", + "picture": "/photos/suisse/1534-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/1534-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", @@ -143,5 +136,6 @@ "id": "247", "name": "Bern" } - ] + ], + "color": "rgb(206,181,134)" } diff --git a/public/coins/switzerland/185.json b/public/coins/switzerland/185.json index 6f5a897..a9dff6e 100644 --- a/public/coins/switzerland/185.json +++ b/public/coins/switzerland/185.json @@ -37,12 +37,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Antoine Bovy" - ], - "designers": [ - "Albert Walch" - ], + "engravers": ["Antoine Bovy"], + "designers": ["Albert Walch"], "description": "Full-length figure of Helvetia, standing, facing left, wearing toga, holding spear in right hand, and supporting shield with coat of arms of Switzerland with left hand. 22 stars around, representing the 22 cantons of the Swiss confederation. In 1983, a 23rd star was added for the Canton of Jura, which was founded in 1979.", "lettering": "HELVETIA\r\nA. BOVY INCᵀ.", "lettering_scripts": [ @@ -52,18 +48,14 @@ ], "unabridged_legend": "Antoine Bovy incidit", "lettering_translation": "Engraved by Antoine Bovy.", - "picture": "https://en.numista.com/catalogue/photos/suisse/64294a6e9f3133.14350286-original.jpg", + "picture": "/photos/suisse/64294a6e9f3133.14350286-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/64294a6e9f3133.14350286-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" }, "reverse": { - "engravers": [ - "Antoine Bovy" - ], - "designers": [ - "Friedrich Fisch" - ], + "engravers": ["Antoine Bovy"], + "designers": ["Friedrich Fisch"], "description": "Wreath formed of oak and alpine rose branches tied with a ribbon below.", "lettering": "1 Fr.\r\n1970", "lettering_scripts": [ @@ -71,7 +63,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/suisse/64294a6fbcc8c0.83604330-original.jpg", + "picture": "/photos/suisse/64294a6fbcc8c0.83604330-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/64294a6fbcc8c0.83604330-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" @@ -148,5 +140,6 @@ "id": "17", "name": "Royal Mint (Tower Hill)" } - ] + ], + "color": "rgb(151.78571428571428,135.59523809523807,103.21428571428572)" } diff --git a/public/coins/switzerland/189.json b/public/coins/switzerland/189.json index 498cea7..9779b68 100644 --- a/public/coins/switzerland/189.json +++ b/public/coins/switzerland/189.json @@ -37,12 +37,8 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Antoine Bovy" - ], - "designers": [ - "Albert Walch" - ], + "engravers": ["Antoine Bovy"], + "designers": ["Albert Walch"], "description": "Full-length figure of Helvetia, standing, facing left, wearing toga, holding spear in right hand, and supporting shield with coat of arms of Switzerland with left hand. 22 stars around, representing the 22 cantons of the Swiss confederation. In 1983, a 23rd star was added for the Canton of Jura, which was founded in 1979.", "lettering": "HELVETIA \r\nA . BOVY INCᵀ.", "lettering_scripts": [ @@ -52,17 +48,13 @@ ], "unabridged_legend": "Antoine Bovy incidit.", "lettering_translation": "Engraved by Antoine Bovy.", - "picture": "https://en.numista.com/catalogue/photos/suisse/1506-original.jpg", + "picture": "/photos/suisse/1506-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/1506-180.jpg", "picture_copyright": "Robert Maiersperger" }, "reverse": { - "engravers": [ - "Antoine Bovy" - ], - "designers": [ - "Friedrich Fisch" - ], + "engravers": ["Antoine Bovy"], + "designers": ["Friedrich Fisch"], "description": "Wreath formed of oak and alpine rose branches tied with a ribbon below.", "lettering": "2 Fr. \r\n1968\r\nB", "lettering_scripts": [ @@ -70,7 +62,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/suisse/1507-original.jpg", + "picture": "/photos/suisse/1507-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/1507-180.jpg", "picture_copyright": "Robert Maiersperger" }, @@ -89,10 +81,7 @@ "maxYear": 1967 } ], - "tags": [ - "Allegory", - "Wreath" - ], + "tags": ["Allegory", "Wreath"], "references": [ { "catalogue": { @@ -135,7 +124,7 @@ "thickness": 2.15, "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/suisse/61f5e74c42a6d0.74417960-original.jpg", + "picture": "/photos/suisse/61f5e74c42a6d0.74417960-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/suisse/61f5e74c42a6d0.74417960-180.jpg", "picture_copyright": "Renato Lima" }, @@ -152,5 +141,6 @@ "id": "247", "name": "Bern" } - ] + ], + "color": "rgb(140,109,60)" } diff --git a/public/coins/thailand/10004.json b/public/coins/thailand/10004.json index 9055fac..da2e5b4 100644 --- a/public/coins/thailand/10004.json +++ b/public/coins/thailand/10004.json @@ -41,23 +41,19 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Wuthichai Saengngoen" - ], + "engravers": ["Wuthichai Saengngoen"], "description": "Portrait of king Rama IX", "lettering": "ภูมิพลอดุลยเดช รัชกาลที่ ๙", "lettering_translation": "Bhumibol Adulyadej Rama IX", - "picture": "https://en.numista.com/catalogue/photos/thailande/1550-original.jpg", + "picture": "/photos/thailande/1550-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/1550-180.jpg", "picture_copyright": "gef" }, "reverse": { - "engravers": [ - "Supab Aun-aree" - ], + "engravers": ["Supab Aun-aree"], "description": "Temple", "lettering": "ประเทศไทย พ.ศ.๒๕๓๓\r\n๑ 1\r\nสตางค์", - "picture": "https://en.numista.com/catalogue/photos/thailande/2099-original.jpg", + "picture": "/photos/thailande/2099-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/2099-180.jpg", "picture_copyright": "gef" }, @@ -80,5 +76,6 @@ ], "weight": 0.5, "size": 15, - "orientation": "coin" + "orientation": "coin", + "color": "rgb(175.86206896551727,131.89655172413785,79.13793103448275)" } diff --git a/public/coins/thailand/1643.json b/public/coins/thailand/1643.json index 4bcaa54..b4bc542 100644 --- a/public/coins/thailand/1643.json +++ b/public/coins/thailand/1643.json @@ -49,7 +49,7 @@ } ], "lettering_translation": "Bhumibol Adulyadej Rama IX", - "picture": "https://en.numista.com/catalogue/photos/thailande/21-original.jpg", + "picture": "/photos/thailande/21-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/21-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -68,7 +68,7 @@ ], "unabridged_legend": "ประเทศไทย ⠂⠴ พุทธศักราช ๒๕๔๕", "lettering_translation": "Thailand 10 Buddhist Era 2545\r\n10 Baht", - "picture": "https://en.numista.com/catalogue/photos/thailande/22-original.jpg", + "picture": "/photos/thailande/22-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/22-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -88,10 +88,7 @@ "maxYear": 2017 } ], - "tags": [ - "Religious building", - "Politician" - ], + "tags": ["Religious building", "Politician"], "references": [ { "catalogue": { @@ -114,7 +111,7 @@ "orientation": "coin", "edge": { "description": "Segmented reeding, 5 reeds on each section", - "picture": "https://en.numista.com/catalogue/photos/thailande/1248-original.jpg", + "picture": "/photos/thailande/1248-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/1248-180.jpg", "picture_copyright": "ADRIARTH" }, @@ -123,5 +120,6 @@ "id": "22", "name": "Istituto Poligrafico e Zecca dello Stato" } - ] + ], + "color": "rgb(205,184,137)" } diff --git a/public/coins/thailand/22038.json b/public/coins/thailand/22038.json index 39579bd..0368265 100644 --- a/public/coins/thailand/22038.json +++ b/public/coins/thailand/22038.json @@ -44,7 +44,7 @@ "description": "Bust of King Rama IX facing left within circle", "lettering": "ภูมิพลอดุลยเดช รัชกาลที่ ๙", "lettering_translation": "Bhumibol Adulyadej Rama IX", - "picture": "https://en.numista.com/catalogue/photos/thailande/1884-original.jpg", + "picture": "/photos/thailande/1884-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/1884-180.jpg", "picture_copyright": "gef" }, @@ -52,7 +52,7 @@ "description": "Arun Temple (Temple of the Dawn), Bangkok", "lettering": "ประเทศไทย ⠂⠴ พ.ศ.๒๕๕๕\r\n๑๐ บาท 10", "lettering_translation": "Thailand 10 BE2555\r\n10 Baht 10", - "picture": "https://en.numista.com/catalogue/photos/thailande/1885-original.jpg", + "picture": "/photos/thailande/1885-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/1885-180.jpg", "picture_copyright": "gef" }, @@ -91,10 +91,11 @@ "orientation": "coin", "edge": { "description": "Segmented reeding; 5 reeds each 15 sections", - "picture": "https://en.numista.com/catalogue/photos/thailande/2860-original.jpg", + "picture": "/photos/thailande/2860-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/thailande/2860-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", "picture_license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en" - } + }, + "color": "rgb(143.25842696629215,131.7977528089888,111.74157303370785)" } diff --git a/public/coins/turkey/3044.json b/public/coins/turkey/3044.json index 6f3ec92..5f2f10d 100644 --- a/public/coins/turkey/3044.json +++ b/public/coins/turkey/3044.json @@ -47,7 +47,7 @@ } ], "lettering_translation": "Republic of Turkey", - "picture": "https://en.numista.com/catalogue/photos/turquie/1170-original.jpg", + "picture": "/photos/turquie/1170-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/1170-180.jpg", "picture_copyright": "KennyG" }, @@ -60,15 +60,12 @@ } ], "lettering_translation": "1\r\nNew Turkish Lira\r\n2006", - "picture": "https://en.numista.com/catalogue/photos/turquie/1171-original.jpg", + "picture": "/photos/turquie/1171-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/1171-180.jpg", "picture_copyright": "KennyG" }, "comments": "The mint set "The first minted new uncirculated coins 2005."
\r\nPicture: © Images courtesy of Alexandr Prokofyev.
\r\n\"\" \"\"", - "tags": [ - "Politician", - "Moon" - ], + "tags": ["Politician", "Moon"], "references": [ { "catalogue": { @@ -91,8 +88,9 @@ "orientation": "medal", "edge": { "description": "Alternating smooth and milled segments (8 each)", - "picture": "https://en.numista.com/catalogue/photos/turquie/635-original.jpg", + "picture": "/photos/turquie/635-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/635-180.jpg", "picture_copyright": "ZacUK" - } + }, + "color": "rgb(149,113,71)" } diff --git a/public/coins/turkey/6163.json b/public/coins/turkey/6163.json index 30e4443..f4d5650 100644 --- a/public/coins/turkey/6163.json +++ b/public/coins/turkey/6163.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Turkey", - "picture": "https://en.numista.com/catalogue/photos/turquie/2815-original.jpg", + "picture": "/photos/turquie/2815-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/2815-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", @@ -61,17 +61,14 @@ } ], "lettering_translation": "1\r\nTurkish Lira\r\n2012", - "picture": "https://en.numista.com/catalogue/photos/turquie/2816-original.jpg", + "picture": "/photos/turquie/2816-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/2816-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "Out of real varieties, the types with the wide and narrow bottom of numeral "1" on the reverse in 2009 are the most popular.
\r\n\"\"
\r\n\"\"
\r\n
\r\nT.C. on edge readable with obverse  or reverse up", - "tags": [ - "Politician", - "Moon" - ], + "tags": ["Politician", "Moon"], "references": [ { "catalogue": { @@ -95,8 +92,9 @@ "edge": { "description": "Smooth with repeated imprints and inscriptions\nof letters \"T.C.\" and tulip figure\n\nNote: variation exist up or down text on edge", "lettering": "||||| T.C. ||||| ~ ||||| T.C. ||||| ~ ||||| T.C. ||||| ~", - "picture": "https://en.numista.com/catalogue/photos/turquie/1922-original.jpg", + "picture": "/photos/turquie/1922-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/1922-180.jpg", "picture_copyright": "Cyrillius" - } + }, + "color": "rgb(180,140,97)" } diff --git a/public/coins/turkey/6164.json b/public/coins/turkey/6164.json index 66cdbbd..2dc8dc1 100644 --- a/public/coins/turkey/6164.json +++ b/public/coins/turkey/6164.json @@ -45,7 +45,7 @@ } ], "lettering_translation": "Republic of Turkey", - "picture": "https://en.numista.com/catalogue/photos/turquie/60b653bcd11049.31947954-original.jpg", + "picture": "/photos/turquie/60b653bcd11049.31947954-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/60b653bcd11049.31947954-180.jpg", "picture_copyright": "rsirian1", "picture_license_name": "CC BY", @@ -59,7 +59,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/turquie/60b653bd2e8064.89871840-original.jpg", + "picture": "/photos/turquie/60b653bd2e8064.89871840-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/60b653bd2e8064.89871840-180.jpg", "picture_copyright": "rsirian1", "picture_license_name": "CC BY", @@ -88,9 +88,10 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/turquie/60b653bd690f64.48018107-original.jpg", + "picture": "/photos/turquie/60b653bd690f64.48018107-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/60b653bd690f64.48018107-180.jpg", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" - } + }, + "color": "rgb(196,180,132)" } diff --git a/public/coins/turkey/6165.json b/public/coins/turkey/6165.json index 0b0f091..71e6264 100644 --- a/public/coins/turkey/6165.json +++ b/public/coins/turkey/6165.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Turkey", - "picture": "https://en.numista.com/catalogue/photos/turquie/2933-original.jpg", + "picture": "/photos/turquie/2933-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/2933-180.jpg", "picture_copyright": "AvrAlex (Belgorod, Russia)" }, @@ -58,7 +58,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/turquie/2934-original.jpg", + "picture": "/photos/turquie/2934-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/2934-180.jpg", "picture_copyright": "AvrAlex (Belgorod, Russia)" }, @@ -85,8 +85,9 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/turquie/2935-original.jpg", + "picture": "/photos/turquie/2935-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/2935-180.jpg", "picture_copyright": "AvrAlex (Belgorod, Russia)" - } + }, + "color": "rgb(172,188,76)" } diff --git a/public/coins/turkey/7047.json b/public/coins/turkey/7047.json index f4c2d86..ddb17bd 100644 --- a/public/coins/turkey/7047.json +++ b/public/coins/turkey/7047.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Turkey", - "picture": "https://en.numista.com/catalogue/photos/turquie/60b65167b40d77.17387560-original.jpg", + "picture": "/photos/turquie/60b65167b40d77.17387560-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/60b65167b40d77.17387560-180.jpg", "picture_copyright": "rsirian1", "picture_license_name": "CC BY", @@ -60,7 +60,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/turquie/60b65167f11553.34262375-original.jpg", + "picture": "/photos/turquie/60b65167f11553.34262375-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/60b65167f11553.34262375-180.jpg", "picture_copyright": "rsirian1", "picture_license_name": "CC BY", @@ -89,10 +89,11 @@ "orientation": "medal", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/turquie/3195-original.jpg", + "picture": "/photos/turquie/3195-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/3195-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", "picture_license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en" - } + }, + "color": "rgb(189.72,161.16,65.28)" } diff --git a/public/coins/turkey/7048.json b/public/coins/turkey/7048.json index bfecf64..efc8d40 100644 --- a/public/coins/turkey/7048.json +++ b/public/coins/turkey/7048.json @@ -46,7 +46,7 @@ } ], "lettering_translation": "Republic of Turkey", - "picture": "https://en.numista.com/catalogue/photos/turquie/1686-original.jpg", + "picture": "/photos/turquie/1686-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/1686-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", @@ -60,16 +60,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/turquie/1687-original.jpg", + "picture": "/photos/turquie/1687-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/1687-180.jpg", "picture_copyright": "Dario Silva Collection", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "comments": "Only the 2011 version, the presence of parts is probably struck with a blocked border. The same happens on the obverse with a narrower font.
\r\n\"\"
\r\n
\r\n
\r\nThe Istanbul suspension bridge has the two continent landmasses separated by the strait (i.e. within the Istanbul city which is spread across the two continents)", - "tags": [ - "Bridge" - ], + "tags": ["Bridge"], "references": [ { "catalogue": { @@ -92,8 +90,9 @@ "orientation": "medal", "edge": { "description": "Coarsely reeded", - "picture": "https://en.numista.com/catalogue/photos/turquie/602-original.jpg", + "picture": "/photos/turquie/602-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/turquie/602-180.jpg", "picture_copyright": "ZacUK" - } + }, + "color": "rgb(160.2364864864865,134.3918918918919,94.76351351351347)" } diff --git a/public/coins/uae/40522.json b/public/coins/uae/40522.json index 602304a..c30d73d 100644 --- a/public/coins/uae/40522.json +++ b/public/coins/uae/40522.json @@ -48,14 +48,12 @@ } ], "lettering_translation": "United Arab Emirates\r\n1\r\nDirham\r\nUnited Arab Emirates", - "picture": "https://en.numista.com/catalogue/photos/emirats_arabes_unis/284-original.jpg", + "picture": "/photos/emirats_arabes_unis/284-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/emirats_arabes_unis/284-180.jpg", "picture_copyright": "Joseph Kunnappally" }, "reverse": { - "engravers": [ - "Geoffrey Colley" - ], + "engravers": ["Geoffrey Colley"], "description": "Dallah (traditional Arabic coffee pot) above dates", "lettering": "١٤٣٥-٢٠١٤", "lettering_scripts": [ @@ -64,7 +62,7 @@ } ], "lettering_translation": "2014-1435", - "picture": "https://en.numista.com/catalogue/photos/emirats_arabes_unis/283-original.jpg", + "picture": "/photos/emirats_arabes_unis/283-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/emirats_arabes_unis/283-180.jpg", "picture_copyright": "Joseph Kunnappally" }, @@ -121,5 +119,6 @@ "id": "20", "name": "Royal Canadian Mint of Winnipeg" } - ] + ], + "color": "rgb(158.81578947368425,136.4473684210526,96.18421052631575)" } diff --git a/public/coins/uk/100658.json b/public/coins/uk/100658.json index 1098dad..b3b5af2 100644 --- a/public/coins/uk/100658.json +++ b/public/coins/uk/100658.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Jody Clark" - ], + "designers": ["Jody Clark"], "description": "Fifth crowned portrait of Queen Elizabeth II right, wearing the George IV State Diadem, with holographic image below and denomination as incuse micro-legend around the edge.", "lettering": "ONE POUND·ONE POUND\r\n2017·ELIZABETH II·D·G·REG·F·D\r\nJ.C\r\n£ / 1", "lettering_scripts": [ @@ -54,14 +52,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/639dfa233d9e73.32275043-original.jpg", + "picture": "/photos/royaume-uni/639dfa233d9e73.32275043-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/639dfa233d9e73.32275043-180.jpg", "picture_copyright": "The Royal Mint, 2017" }, "reverse": { - "designers": [ - "David Pearce" - ], + "designers": ["David Pearce"], "description": "An English rose, Welsh leek, Scottish thistle and Northern Irish shamrock emerging from one stem within a royal coronet, with the minting year as incuse micro-legend around the rim.", "lettering": "— 2017 — — 2017 —\r\nD P\r\nONE POUND", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/639dfa2407d068.39111385-original.jpg", + "picture": "/photos/royaume-uni/639dfa2407d068.39111385-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/639dfa2407d068.39111385-180.jpg", "picture_copyright": "The Royal Mint, 2017" }, @@ -131,9 +127,7 @@ "maxYear": 2022 } ], - "tags": [ - "Flower" - ], + "tags": ["Flower"], "references": [ { "catalogue": { @@ -163,7 +157,7 @@ "orientation": "medal", "edge": { "description": "Segmented reeding (milled on alternate edges)", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/7928-original.jpg", + "picture": "/photos/royaume-uni/7928-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/7928-180.jpg", "picture_copyright": "Mark240590" }, @@ -172,5 +166,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(204,188,132)" } diff --git a/public/coins/uk/1324.json b/public/coins/uk/1324.json index 2be66a4..4cc592f 100644 --- a/public/coins/uk/1324.json +++ b/public/coins/uk/1324.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·DEI·GRA·REG·FID·DEF ·\r\nIRB", "lettering_scripts": [ @@ -54,14 +52,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8793-original.jpg", + "picture": "/photos/royaume-uni/8793-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8793-180.jpg", "picture_copyright": "narracan coins" }, "reverse": { - "engravers": [ - "Bruce Rushin" - ], + "engravers": ["Bruce Rushin"], "description": "Four concentric circles representing the Iron Age, Industrial Revolution, silicon chip and the internet, denomination above, date below.", "lettering": "TWO POUNDS \r\nBR\r\n1998", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8794-original.jpg", + "picture": "/photos/royaume-uni/8794-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8794-180.jpg", "picture_copyright": "narracan coins" }, @@ -131,9 +127,7 @@ "maxYear": 2015 } ], - "tags": [ - "Science" - ], + "tags": ["Science"], "references": [ { "catalogue": { @@ -157,7 +151,7 @@ "edge": { "description": "Milled with incuse lettering", "lettering": "STANDING ON THE SHOULDERS OF GIANTS", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/1915-original.jpg", + "picture": "/photos/royaume-uni/1915-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/1915-180.jpg", "picture_copyright": "ZacUK" }, @@ -166,5 +160,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(181,148,98)" } diff --git a/public/coins/uk/1376.json b/public/coins/uk/1376.json index 55d5a2a..581d1eb 100644 --- a/public/coins/uk/1376.json +++ b/public/coins/uk/1376.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around.\r\n\r\nNote: varieties exist, see below", "lettering": "ELIZABETH II\r\nRDM\r\nD·G·REG·F·D·", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/97-original.jpg", + "picture": "/photos/royaume-uni/97-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/97-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "William Maving Gardner" - ], + "engravers": ["William Maving Gardner"], "description": "Crowned Tudor rose dividing date and legend, denomination below.", "lettering": "TWENTY PENCE\r\n19 97\r\nW G\r\n20", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/99-original.jpg", + "picture": "/photos/royaume-uni/99-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/99-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -91,9 +87,7 @@ "maxYear": 1996 } ], - "tags": [ - "Flower" - ], + "tags": ["Flower"], "references": [ { "catalogue": { @@ -122,5 +116,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(154.96153846153848,121.61538461538458,100.03846153846152)" } diff --git a/public/coins/uk/1384.json b/public/coins/uk/1384.json index 34138ab..15abf53 100644 --- a/public/coins/uk/1384.json +++ b/public/coins/uk/1384.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1993\r\nRDM", "lettering_scripts": [ @@ -54,14 +52,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/6007ec35825a20.82463811-original.jpg", + "picture": "/photos/royaume-uni/6007ec35825a20.82463811-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/6007ec35825a20.82463811-180.jpg", "picture_copyright": "tolnomur" }, "reverse": { - "engravers": [ - "Eric Sewell" - ], + "engravers": ["Eric Sewell"], "description": "Royal Shield of Arms above denomination.", "lettering": "HONI SO[IT QUI M]AL Y PENSE\r\nDIEU ET MON DROIT\r\nONE POUND", "lettering_scripts": [ @@ -70,7 +66,7 @@ } ], "lettering_translation": "Shame on he who thinks evil of it\r\nGod and my right", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/6007ec35f10735.71235873-original.jpg", + "picture": "/photos/royaume-uni/6007ec35f10735.71235873-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/6007ec35f10735.71235873-180.jpg", "picture_copyright": "tolnomur" }, @@ -123,9 +119,7 @@ "maxYear": 2008 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -155,7 +149,7 @@ } ], "lettering_translation": "An ornament and a safeguard", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2052-original.jpg", + "picture": "/photos/royaume-uni/2052-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2052-180.jpg", "picture_copyright": "ZacUK" }, @@ -164,5 +158,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(180,140,52)" } diff --git a/public/coins/uk/1389.json b/public/coins/uk/1389.json index 88611cc..cb7f2e2 100644 --- a/public/coins/uk/1389.json +++ b/public/coins/uk/1389.json @@ -43,9 +43,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Arnold Machin" - ], + "engravers": ["Arnold Machin"], "description": "Second crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II D·G·REG·F·D·1983", "lettering_scripts": [ @@ -55,16 +53,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8141-original.jpg", + "picture": "/photos/royaume-uni/8141-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8141-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Eric Sewell" - ], + "engravers": ["Eric Sewell"], "description": "Royal Arms with supporters, denomination below.", "lettering": "HONI SOIT QUI MAL Y PENSE\r\nDIEU ET MON DROIT\r\nONE POUND", "lettering_scripts": [ @@ -73,7 +69,7 @@ } ], "lettering_translation": "Shame on he who thinks evil of it\r\nGod and my right", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8142-original.jpg", + "picture": "/photos/royaume-uni/8142-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8142-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -127,10 +123,7 @@ "maxYear": 2008 } ], - "tags": [ - "Fantasy animal", - "Coat of Arms" - ], + "tags": ["Fantasy animal", "Coat of Arms"], "references": [ { "catalogue": { @@ -160,7 +153,7 @@ } ], "lettering_translation": "An ornament and a safeguard", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2044-original.jpg", + "picture": "/photos/royaume-uni/2044-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2044-180.jpg", "picture_copyright": "ZacUK" }, @@ -169,5 +162,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(174.14634146341464,143.0487804878049,80.85365853658536)" } diff --git a/public/coins/uk/1390.json b/public/coins/uk/1390.json index 1d2fe8c..65515b4 100644 --- a/public/coins/uk/1390.json +++ b/public/coins/uk/1390.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1996\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8147-original.jpg", + "picture": "/photos/royaume-uni/8147-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8147-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Norman Sillman" - ], + "engravers": ["Norman Sillman"], "description": "A Celtic cross charged at the centre with an annulet, therein a Pimpernel flower and overall an ancient Torque, denomination below.", "lettering": "ONE POUND", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8148-original.jpg", + "picture": "/photos/royaume-uni/8148-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8148-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -115,9 +111,7 @@ "maxYear": 2001 } ], - "tags": [ - "Cross" - ], + "tags": ["Cross"], "references": [ { "catalogue": { @@ -147,7 +141,7 @@ } ], "lettering_translation": "An ornament and a safeguard", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2058-original.jpg", + "picture": "/photos/royaume-uni/2058-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2058-180.jpg", "picture_copyright": "ZacUK" }, @@ -156,5 +150,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(196.3274336283186,142.16814159292034,58.67256637168139)" } diff --git a/public/coins/uk/1395.json b/public/coins/uk/1395.json index ac1ce8d..6c5e1af 100644 --- a/public/coins/uk/1395.json +++ b/public/coins/uk/1395.json @@ -43,9 +43,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around", "lettering": "ELIZABETH·II·D·G REG·F·D·2001\r\nIRB", "lettering_scripts": [ @@ -55,14 +53,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/600606b098d108.26297446-original.jpg", + "picture": "/photos/royaume-uni/600606b098d108.26297446-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/600606b098d108.26297446-180.jpg", "picture_copyright": "tolnomur" }, "reverse": { - "engravers": [ - "Norman Sillman" - ], + "engravers": ["Norman Sillman"], "description": "A Celtic cross charged at the centre with an Annulet therein a Pimpernel flower and overall an ancient Torque, denomination below", "lettering": "ONE POUND", "lettering_scripts": [ @@ -70,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/600606b15f4a00.86508115-original.jpg", + "picture": "/photos/royaume-uni/600606b15f4a00.86508115-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/600606b15f4a00.86508115-180.jpg", "picture_copyright": "tolnomur" }, @@ -112,10 +108,7 @@ "maxYear": 2001 } ], - "tags": [ - "Flower", - "Cross" - ], + "tags": ["Flower", "Cross"], "references": [ { "catalogue": { @@ -145,7 +138,7 @@ } ], "lettering_translation": "An ornament and a safeguard", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/9962-original.jpg", + "picture": "/photos/royaume-uni/9962-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/9962-180.jpg", "picture_copyright": "ZacUK" }, @@ -154,5 +147,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(188,148,60)" } diff --git a/public/coins/uk/1397.json b/public/coins/uk/1397.json index 28f06ca..590bc53 100644 --- a/public/coins/uk/1397.json +++ b/public/coins/uk/1397.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around", "lettering": "ELIZABETH II D·G·REG·F·D·1997\r\nRDM", "lettering_scripts": [ @@ -54,15 +52,13 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/6078b061958350.66980564-original.jpg", + "picture": "/photos/royaume-uni/6078b061958350.66980564-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/6078b061958350.66980564-180.jpg", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Norman Sillman" - ], + "engravers": ["Norman Sillman"], "description": "Three lions passant guardant above denomination", "lettering": "ONE POUND", "lettering_scripts": [ @@ -70,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/6078b06251e238.62911478-original.jpg", + "picture": "/photos/royaume-uni/6078b06251e238.62911478-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/6078b06251e238.62911478-180.jpg", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" @@ -113,9 +109,7 @@ "maxYear": 2002 } ], - "tags": [ - "Cat or feline" - ], + "tags": ["Cat or feline"], "references": [ { "catalogue": { @@ -145,7 +139,7 @@ } ], "lettering_translation": "An ornament and a safeguard", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2060-original.jpg", + "picture": "/photos/royaume-uni/2060-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2060-180.jpg", "picture_copyright": "ZacUK" }, @@ -154,5 +148,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(191,177,107)" } diff --git a/public/coins/uk/20700.json b/public/coins/uk/20700.json index dde6dcb..879328d 100644 --- a/public/coins/uk/20700.json +++ b/public/coins/uk/20700.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1997\r\nRDM", "lettering_scripts": [ @@ -54,14 +52,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5f816920837ae2.44392262-original.jpg", + "picture": "/photos/royaume-uni/5f816920837ae2.44392262-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5f816920837ae2.44392262-180.jpg", "picture_copyright": "squivvia" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "A figure of Britannia seated beside a lion, with a shield resting against her right side, holding a trident in her right hand and an olive branch in her left, denomination below and legend above.", "lettering": "FIFTY PENCE\r\n50", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5f816920d120f9.74858211-original.jpg", + "picture": "/photos/royaume-uni/5f816920d120f9.74858211-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5f816920d120f9.74858211-180.jpg", "picture_copyright": "squivvia" }, @@ -109,11 +105,7 @@ "maxYear": 1997 } ], - "tags": [ - "Cat or feline", - "Firearm or handheld weapon", - "Allegory" - ], + "tags": ["Cat or feline", "Firearm or handheld weapon", "Allegory"], "references": [ { "catalogue": { @@ -142,5 +134,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(133.68932038834956,133.68932038834956,121.31067961165043)" } diff --git a/public/coins/uk/2236.json b/public/coins/uk/2236.json index c779171..b91b147 100644 --- a/public/coins/uk/2236.json +++ b/public/coins/uk/2236.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2004\r\nIRB", "lettering_scripts": [ @@ -54,15 +52,13 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/60bb754aeb0553.89555244-original.jpg", + "picture": "/photos/royaume-uni/60bb754aeb0553.89555244-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/60bb754aeb0553.89555244-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "Part of the Crest of England, a lion passant guardant royally crowned, legend above, denomination below.", "lettering": "TEN PENCE\r\n10", "lettering_scripts": [ @@ -70,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/60bb754b603047.36155089-original.jpg", + "picture": "/photos/royaume-uni/60bb754b603047.36155089-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/60bb754b603047.36155089-180.jpg", "picture_copyright": "NumisCorner", "picture_copyright_url": "https://www.numiscorner.com/" @@ -144,7 +140,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/615ae6de952c86.89464836-original.jpg", + "picture": "/photos/royaume-uni/615ae6de952c86.89464836-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/615ae6de952c86.89464836-180.jpg" }, "mints": [ @@ -152,5 +148,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(201,185,132)" } diff --git a/public/coins/uk/25746.json b/public/coins/uk/25746.json index e169fc4..46151bc 100644 --- a/public/coins/uk/25746.json +++ b/public/coins/uk/25746.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2011\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5541-original.jpg", + "picture": "/photos/royaume-uni/5541-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5541-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Matthew Dent" - ], + "engravers": ["Matthew Dent"], "description": "Upper left section of the Royal Shield of Arms, denomination to upper segment.", "lettering": "TEN PENCE", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5542-original.jpg", + "picture": "/photos/royaume-uni/5542-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5542-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -124,9 +120,7 @@ "maxYear": 2012 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -149,7 +143,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/10221-original.jpg", + "picture": "/photos/royaume-uni/10221-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/10221-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", @@ -160,5 +154,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(171.9318181818182,141.02272727272725,83.0681818181818)" } diff --git a/public/coins/uk/25766.json b/public/coins/uk/25766.json index c8272d7..2f251c1 100644 --- a/public/coins/uk/25766.json +++ b/public/coins/uk/25766.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2012\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5537-original.jpg", + "picture": "/photos/royaume-uni/5537-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5537-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Matthew Dent" - ], + "engravers": ["Matthew Dent"], "description": "Centre section of the Royal Shield of Arms, denomination central.", "lettering": "FIVE PENCE", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5538-original.jpg", + "picture": "/photos/royaume-uni/5538-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5538-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -113,9 +109,7 @@ "maxYear": 2012 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -138,7 +132,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/6367-original.jpg", + "picture": "/photos/royaume-uni/6367-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/6367-180.jpg", "picture_copyright": "Cyrillius" }, @@ -147,5 +141,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(179.89726027397265,151.9520547945206,75.10273972602735)" } diff --git a/public/coins/uk/2763.json b/public/coins/uk/2763.json index 4c4a029..27c737a 100644 --- a/public/coins/uk/2763.json +++ b/public/coins/uk/2763.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around", "lettering": "ELIZABETH·II·D·G REG·F·D·2005\r\nIRB", "lettering_scripts": [ @@ -54,15 +52,13 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/606b8078581b90.27995667-original.jpg", + "picture": "/photos/royaume-uni/606b8078581b90.27995667-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/606b8078581b90.27995667-180.jpg", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Edwina Ellis" - ], + "engravers": ["Edwina Ellis"], "description": "A representation of the Menai Bridge inside a border of railings and stanchions.", "lettering": "ONE POUND", "lettering_scripts": [ @@ -70,7 +66,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/606b80795b8ce9.01239281-original.jpg", + "picture": "/photos/royaume-uni/606b80795b8ce9.01239281-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/606b80795b8ce9.01239281-180.jpg", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" @@ -113,9 +109,7 @@ "maxYear": 2008 } ], - "tags": [ - "Bridge" - ], + "tags": ["Bridge"], "references": [ { "catalogue": { @@ -138,7 +132,7 @@ "orientation": "medal", "edge": { "description": "Milled with a decorative pattern symbolising bridges and pathways", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/4467-original.jpg", + "picture": "/photos/royaume-uni/4467-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/4467-180.jpg", "picture_copyright": "ZacUK" }, @@ -147,5 +141,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(193,164,82)" } diff --git a/public/coins/uk/4038.json b/public/coins/uk/4038.json index 2fffd76..ff714d6 100644 --- a/public/coins/uk/4038.json +++ b/public/coins/uk/4038.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2011\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5529-original.jpg", + "picture": "/photos/royaume-uni/5529-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5529-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Matthew Dent" - ], + "engravers": ["Matthew Dent"], "description": "Left part of Royal Shield, denomination in left segment.", "lettering": "ONE PENNY\r\nMD", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5530-original.jpg", + "picture": "/photos/royaume-uni/5530-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5530-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -146,9 +142,7 @@ "maxYear": 2022 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -177,5 +171,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(188,132,92)" } diff --git a/public/coins/uk/4039.json b/public/coins/uk/4039.json index 513cea0..96c48cf 100644 --- a/public/coins/uk/4039.json +++ b/public/coins/uk/4039.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2009\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5531-original.jpg", + "picture": "/photos/royaume-uni/5531-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5531-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Matthew Dent" - ], + "engravers": ["Matthew Dent"], "description": "Top right section of the Royal Shield of Arms, denomination above.", "lettering": "TWO PENCE\r\nMD", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5532-original.jpg", + "picture": "/photos/royaume-uni/5532-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5532-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -146,9 +142,7 @@ "maxYear": 2022 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -177,5 +171,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(180,113,76)" } diff --git a/public/coins/uk/5628.json b/public/coins/uk/5628.json index 14c2be2..efa6a70 100644 --- a/public/coins/uk/5628.json +++ b/public/coins/uk/5628.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G·REG·F·D · 2008\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5543-original.jpg", + "picture": "/photos/royaume-uni/5543-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5543-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Matthew Dent" - ], + "engravers": ["Matthew Dent"], "description": "Lower right section of the Royal Shield, denomination to right segment of rim.", "lettering": "TWENTY PENCE\r\nMD", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5544-original.jpg", + "picture": "/photos/royaume-uni/5544-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5544-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -146,9 +142,7 @@ "maxYear": 2012 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -177,5 +171,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(180,148,92)" } diff --git a/public/coins/uk/573.json b/public/coins/uk/573.json index c4cf155..2ddeb39 100644 --- a/public/coins/uk/573.json +++ b/public/coins/uk/573.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH II\r\nIRB\r\nD·G·REG·F·D", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/95-original.jpg", + "picture": "/photos/royaume-uni/95-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/95-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "William Maving Gardner" - ], + "engravers": ["William Maving Gardner"], "description": "Crowned Tudor rose dividing date and legend, denomination below.", "lettering": "TWENTY PENCE\r\n20 00\r\nW G\r\n20", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/96-original.jpg", + "picture": "/photos/royaume-uni/96-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/96-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -135,9 +131,7 @@ "maxYear": 2015 } ], - "tags": [ - "Flower" - ], + "tags": ["Flower"], "references": [ { "catalogue": { @@ -166,5 +160,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(139.344262295082,126.80327868852459,115.65573770491802)" } diff --git a/public/coins/uk/6612.json b/public/coins/uk/6612.json index c23ad7f..c313d48 100644 --- a/public/coins/uk/6612.json +++ b/public/coins/uk/6612.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2010\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5535-original.jpg", + "picture": "/photos/royaume-uni/5535-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5535-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Matthew Dent" - ], + "engravers": ["Matthew Dent"], "description": "Central section of the Royal Arms showing elements of all four quadrants.", "lettering": "FIVE PENCE", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5536-original.jpg", + "picture": "/photos/royaume-uni/5536-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5536-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -146,9 +142,7 @@ "maxYear": 2015 } ], - "tags": [ - "Coat of Arms" - ], + "tags": ["Coat of Arms"], "references": [ { "catalogue": { @@ -171,7 +165,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/9727-original.jpg", + "picture": "/photos/royaume-uni/9727-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/9727-180.jpg", "picture_copyright": "G-REMXD" }, @@ -180,5 +174,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(177.23404255319153,133.82978723404258,77.76595744680849)" } diff --git a/public/coins/uk/664.json b/public/coins/uk/664.json index 9faa005..b4c1f77 100644 --- a/public/coins/uk/664.json +++ b/public/coins/uk/664.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Arnold Machin" - ], + "designers": ["Arnold Machin"], "description": "Second crowned portrait of Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH · II D · G · REG · F · D · 1980", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/78-original.jpg", + "picture": "/photos/royaume-uni/78-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/78-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "designers": [ - "Christopher Ironside" - ], + "designers": ["Christopher Ironside"], "description": "The badge of the Prince of Wales, a plume of three ostrich feathers enfiling a coronet of cross pattée and fleur de lis, dividing motto with legend above and denomination below.", "lettering": "NEW PENCE\r\nICH DIEN\r\n2", "lettering_scripts": [ @@ -72,17 +68,14 @@ } ], "lettering_translation": "I serve", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/79-original.jpg", + "picture": "/photos/royaume-uni/79-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/79-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "comments": "Although these coins were not released until Decimalisation Day on 15th February 1971, Prince Charles, the Prince of Wales struck 6 of the new two pence pieces at the opening of the new Royal Mint in Llantrisant, Glamorgan on 17th December 1968.
\r\n
\r\nChristopher Ironside designed all six new denominations for decimalisation for which he was awarded the OBE in 1971.", - "tags": [ - "Crown", - "Fleur-de-lis" - ], + "tags": ["Crown", "Fleur-de-lis"], "references": [ { "catalogue": { @@ -105,7 +98,7 @@ "orientation": "medal", "edge": { "description": "Plain", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/6238a9846c69f5.38108830-original.jpg", + "picture": "/photos/royaume-uni/6238a9846c69f5.38108830-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/6238a9846c69f5.38108830-180.jpg", "picture_copyright": "Worldwide collection", "picture_license_name": "CC BY-NC", @@ -116,5 +109,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(149,102,61)" } diff --git a/public/coins/uk/665.json b/public/coins/uk/665.json index da92a01..62f3a9e 100644 --- a/public/coins/uk/665.json +++ b/public/coins/uk/665.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Arnold Machin" - ], + "designers": ["Arnold Machin"], "description": "Second crowned portrait of Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II D·G·REG·F·D·1980", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5f7902f8ce8467.33927845-original.jpg", + "picture": "/photos/royaume-uni/5f7902f8ce8467.33927845-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5f7902f8ce8467.33927845-180.jpg", "picture_copyright": "Rafael Pinheiro Aquino", "picture_license_name": "CC BY-SA", "picture_license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en" }, "reverse": { - "designers": [ - "Christopher Ironside" - ], + "designers": ["Christopher Ironside"], "description": "A crowned portcullis with chains (an adaptation of the Badge of Henry VII which is now the Badge of the Palace of Westminster) and the face value.", "lettering": "NEW PENNY\r\n1", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5f7902fa135f77.28430982-original.jpg", + "picture": "/photos/royaume-uni/5f7902fa135f77.28430982-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5f7902fa135f77.28430982-180.jpg", "picture_copyright": "Rafael Pinheiro Aquino", "picture_license_name": "CC BY-SA", @@ -119,5 +115,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(108,59,51)" } diff --git a/public/coins/uk/70547.json b/public/coins/uk/70547.json index 303f2cf..51390dc 100644 --- a/public/coins/uk/70547.json +++ b/public/coins/uk/70547.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "designers": [ - "Jody Clark" - ], + "designers": ["Jody Clark"], "description": "Fifth crowned portrait of Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II∙DEI∙GRA∙REG∙FID∙DEF∙2020∙\r\nJ.C", "lettering_scripts": [ @@ -54,14 +52,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5f25a703bc92b8.92049342-original.jpg", + "picture": "/photos/royaume-uni/5f25a703bc92b8.92049342-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5f25a703bc92b8.92049342-180.jpg", "picture_copyright": "The Royal Mint, 2020" }, "reverse": { - "designers": [ - "Matthew Dent" - ], + "designers": ["Matthew Dent"], "description": "Centre section of the Royal Shield, denomination central.", "lettering": "FIVE PENCE", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5f25a7043cf6c9.88081525-original.jpg", + "picture": "/photos/royaume-uni/5f25a7043cf6c9.88081525-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5f25a7043cf6c9.88081525-180.jpg", "picture_copyright": "The Royal Mint, 2020" }, @@ -87,10 +83,7 @@ "maxYear": 2015 } ], - "tags": [ - "Puzzle coin", - "Coat of Arms" - ], + "tags": ["Puzzle coin", "Coat of Arms"], "references": [ { "catalogue": { @@ -113,7 +106,7 @@ "orientation": "medal", "edge": { "description": "Milled", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/9728-original.jpg", + "picture": "/photos/royaume-uni/9728-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/9728-180.jpg", "picture_copyright": "G-REMXD" }, @@ -122,5 +115,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(135.59523809523813,135.59523809523813,119.40476190476188)" } diff --git a/public/coins/uk/7398.json b/public/coins/uk/7398.json index 5c3b159..8431773 100644 --- a/public/coins/uk/7398.json +++ b/public/coins/uk/7398.json @@ -41,9 +41,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2006 \r\nIRB", "lettering_scripts": [ @@ -53,16 +51,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2464-original.jpg", + "picture": "/photos/royaume-uni/2464-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2464-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "The badge of the Prince of Wales, a plume of three ostrich feathers enfiling a coronet of cross pattée and fleur de lys, dividing motto with legend above and denomination below.", "lettering": "TWO PENCE\r\nICH DIEN\r\n2", "lettering_scripts": [ @@ -71,7 +67,7 @@ } ], "lettering_translation": "I serve", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2465-original.jpg", + "picture": "/photos/royaume-uni/2465-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2465-180.jpg", "picture_copyright": "Florino28", "picture_license_name": "CC BY-NC-SA", @@ -124,10 +120,7 @@ "maxYear": 2008 } ], - "tags": [ - "Crown", - "Fleur-de-lis" - ], + "tags": ["Crown", "Fleur-de-lis"], "references": [ { "catalogue": { @@ -156,5 +149,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(166,97,66)" } diff --git a/public/coins/uk/861.json b/public/coins/uk/861.json index af581f3..bc6a26b 100644 --- a/public/coins/uk/861.json +++ b/public/coins/uk/861.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1989\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2190-original.jpg", + "picture": "/photos/royaume-uni/2190-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2190-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "Crowned portcullis with chains (an adaptation of the Badge of Henry VII which is now the Badge of the Palace of Westminster) with legend above and denomination below.", "lettering": "ONE PENNY\r\n1", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2191-original.jpg", + "picture": "/photos/royaume-uni/2191-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2191-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -91,9 +87,7 @@ "maxYear": 1997 } ], - "tags": [ - "Crown" - ], + "tags": ["Crown"], "references": [ { "catalogue": { @@ -122,5 +116,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(200,152,92)" } diff --git a/public/coins/uk/862.json b/public/coins/uk/862.json index 0343bf4..67f7cf2 100644 --- a/public/coins/uk/862.json +++ b/public/coins/uk/862.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2001\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/64-original.jpg", + "picture": "/photos/royaume-uni/64-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/64-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "A crowned portcullis with chains (an adaptation of the Badge of Henry VII, now the Badge of the Palace of Westminster), denomination around.", "lettering": "ONE PENNY\r\n1", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/65-original.jpg", + "picture": "/photos/royaume-uni/65-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/65-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -135,9 +131,7 @@ "maxYear": 2015 } ], - "tags": [ - "Crown" - ], + "tags": ["Crown"], "references": [ { "catalogue": { @@ -166,5 +160,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(148,92,60)" } diff --git a/public/coins/uk/863.json b/public/coins/uk/863.json index 55e280f..bb4ccf8 100644 --- a/public/coins/uk/863.json +++ b/public/coins/uk/863.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around", "lettering": "ELIZABETH II D·G·REG·F·D·1990\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8119-original.jpg", + "picture": "/photos/royaume-uni/8119-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8119-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Leslie Durbin" - ], + "engravers": ["Leslie Durbin"], "description": "A leek, the emblem of Wales, encircled by the Royal Diadem", "lettering": "ONE POUND", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/8120-original.jpg", + "picture": "/photos/royaume-uni/8120-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/8120-180.jpg", "picture_copyright": "Mike Bentley", "picture_license_name": "CC BY-NC", @@ -104,9 +100,7 @@ "maxYear": 1990 } ], - "tags": [ - "Crown" - ], + "tags": ["Crown"], "references": [ { "catalogue": { @@ -136,7 +130,7 @@ } ], "lettering_translation": "True am I to my country", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/2046-original.jpg", + "picture": "/photos/royaume-uni/2046-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/2046-180.jpg", "picture_copyright": "ZacUK" }, @@ -145,5 +139,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(220.22727272727272,104.31818181818181,34.77272727272727)" } diff --git a/public/coins/uk/864.json b/public/coins/uk/864.json index 4f2c085..026218d 100644 --- a/public/coins/uk/864.json +++ b/public/coins/uk/864.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2001\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/84-original.jpg", + "picture": "/photos/royaume-uni/84-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/84-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "A figure of Britannia seated beside a lion, with a shield resting against her right side, holding a trident in her right hand and an olive branch in her left, denomination below and legend above.", "lettering": "FIFTY PENCE\r\n50", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/86-original.jpg", + "picture": "/photos/royaume-uni/86-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/86-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -124,11 +120,7 @@ "maxYear": 2009 } ], - "tags": [ - "Cat or feline", - "Firearm or handheld weapon", - "Allegory" - ], + "tags": ["Cat or feline", "Firearm or handheld weapon", "Allegory"], "references": [ { "catalogue": { @@ -164,5 +156,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(161.82692307692307,145.48076923076923,93.17307692307693)" } diff --git a/public/coins/uk/865.json b/public/coins/uk/865.json index af8f1bd..f76cb64 100644 --- a/public/coins/uk/865.json +++ b/public/coins/uk/865.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Arnold Machin" - ], + "engravers": ["Arnold Machin"], "description": "Second crowned portrait of HM Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH II\r\nD·G·REG·F·D·", "lettering_scripts": [ @@ -54,14 +52,12 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/10769-original.jpg", + "picture": "/photos/royaume-uni/10769-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/10769-180.jpg", "picture_copyright": "Tony K" }, "reverse": { - "engravers": [ - "William Maving Gardner" - ], + "engravers": ["William Maving Gardner"], "description": "Crowned Tudor rose dividing date and legend, denomination below.", "lettering": "TWENTY PENCE\r\n1982\r\nW G\r\n20", "lettering_scripts": [ @@ -69,7 +65,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/10770-original.jpg", + "picture": "/photos/royaume-uni/10770-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/10770-180.jpg", "picture_copyright": "Tony K" }, @@ -131,10 +127,7 @@ "maxYear": 2022 } ], - "tags": [ - "Crown", - "Flower" - ], + "tags": ["Crown", "Flower"], "references": [ { "catalogue": { @@ -163,5 +156,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(199,183,137)" } diff --git a/public/coins/uk/867.json b/public/coins/uk/867.json index 5f6fbaa..6ada134 100644 --- a/public/coins/uk/867.json +++ b/public/coins/uk/867.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1990\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/62-original.jpg", + "picture": "/photos/royaume-uni/62-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/62-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "The badge of the Prince of Wales, a plume of three ostrich feathers enfiling a coronet of cross pattée and fleur de lis, dividing motto with legend above and denomination below.", "lettering": "TWO PENCE\r\nICH DIEN\r\n2", "lettering_scripts": [ @@ -72,7 +68,7 @@ } ], "lettering_translation": "I serve", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/63-original.jpg", + "picture": "/photos/royaume-uni/63-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/63-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -103,9 +99,7 @@ "maxYear": 1996 } ], - "tags": [ - "Fleur-de-lis" - ], + "tags": ["Fleur-de-lis"], "references": [ { "catalogue": { @@ -134,5 +128,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(158,108,76)" } diff --git a/public/coins/uk/868.json b/public/coins/uk/868.json index e13557d..86a445f 100644 --- a/public/coins/uk/868.json +++ b/public/coins/uk/868.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of HM Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1993\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/215-original.jpg", + "picture": "/photos/royaume-uni/215-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/215-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "Badge of the Prince of Wales, a plume of three ostrich feathers enfiling a coronet of cross pattée and fleur de lys, dividing motto with legend above and denomination below.", "lettering": "TWO PENCE\r\nICH DIEN\r\n2", "lettering_scripts": [ @@ -72,7 +68,7 @@ } ], "lettering_translation": "I serve", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/216-original.jpg", + "picture": "/photos/royaume-uni/216-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/216-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -103,10 +99,7 @@ "maxYear": 1996 } ], - "tags": [ - "Crown", - "Fleur-de-lis" - ], + "tags": ["Crown", "Fleur-de-lis"], "references": [ { "catalogue": { @@ -135,5 +128,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(156,108,68)" } diff --git a/public/coins/uk/875.json b/public/coins/uk/875.json index e64dcaa..c91d4f9 100644 --- a/public/coins/uk/875.json +++ b/public/coins/uk/875.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1992\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/7600-original.jpg", + "picture": "/photos/royaume-uni/7600-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/7600-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "The Badge of Scotland, a thistle royally crowned, legend above, denomination below.", "lettering": "FIVE PENCE\r\n5", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/208-original.jpg", + "picture": "/photos/royaume-uni/208-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/208-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -102,9 +98,7 @@ "maxYear": 1996 } ], - "tags": [ - "Crown" - ], + "tags": ["Crown"], "references": [ { "catalogue": { @@ -133,5 +127,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(147.7241379310345,130.1379310344828,107.27586206896551)" } diff --git a/public/coins/uk/876.json b/public/coins/uk/876.json index ceb5484..ebc6bbd 100644 --- a/public/coins/uk/876.json +++ b/public/coins/uk/876.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Ian Rank-Broadley" - ], + "engravers": ["Ian Rank-Broadley"], "description": "Fourth crowned portrait of Queen Elizabeth II right, wearing the Girls of Great Britain and Ireland tiara, legend around.", "lettering": "ELIZABETH·II·D·G REG·F·D·2006\r\nIRB", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5533-original.jpg", + "picture": "/photos/royaume-uni/5533-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5533-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", "picture_license_url": "https://creativecommons.org/licenses/by-nc/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "The Badge of Scotland, a thistle royally crowned, with legend above and denomination below.", "lettering": "FIVE PENCE\r\n5", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/5534-original.jpg", + "picture": "/photos/royaume-uni/5534-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/5534-180.jpg", "picture_copyright": "Monéphil", "picture_license_name": "CC BY-NC", @@ -123,9 +119,7 @@ "maxYear": 2010 } ], - "tags": [ - "Crown" - ], + "tags": ["Crown"], "references": [ { "catalogue": { @@ -148,7 +142,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/10227-original.jpg", + "picture": "/photos/royaume-uni/10227-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/10227-180.jpg", "picture_copyright": "CyrusPamelaOne", "picture_license_name": "CC BY-SA", @@ -159,5 +153,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(154.59375,141.84375,100.40625000000001)" } diff --git a/public/coins/uk/879.json b/public/coins/uk/879.json index 74beaf5..3f92aab 100644 --- a/public/coins/uk/879.json +++ b/public/coins/uk/879.json @@ -42,9 +42,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Raphael David Maklouf" - ], + "engravers": ["Raphael David Maklouf"], "description": "Third crowned portrait of Queen Elizabeth II right, wearing the George IV State Diadem, legend around.", "lettering": "ELIZABETH II D·G·REG·F·D·1992\r\nRDM", "lettering_scripts": [ @@ -54,16 +52,14 @@ ], "unabridged_legend": "Elizabeth II Dei Gratia Regina Fidei Defensatrix", "lettering_translation": "Elizabeth the Second by the Grace of God Queen Defender of the Faith", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/68-original.jpg", + "picture": "/photos/royaume-uni/68-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/68-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", "picture_license_url": "https://creativecommons.org/licenses/by/4.0/deed.en" }, "reverse": { - "engravers": [ - "Christopher Ironside" - ], + "engravers": ["Christopher Ironside"], "description": "Part of the crest of England, a lion passant guardant royally crowned, legend above, denomination below.", "lettering": "TEN PENCE\r\n10", "lettering_scripts": [ @@ -71,7 +67,7 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/69-original.jpg", + "picture": "/photos/royaume-uni/69-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/69-180.jpg", "picture_copyright": "Numista", "picture_license_name": "CC BY", @@ -113,10 +109,7 @@ "maxYear": 1996 } ], - "tags": [ - "Cat or feline", - "Crown" - ], + "tags": ["Cat or feline", "Crown"], "references": [ { "catalogue": { @@ -139,7 +132,7 @@ "orientation": "medal", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/royaume-uni/615ae685136833.67761440-original.jpg", + "picture": "/photos/royaume-uni/615ae685136833.67761440-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/royaume-uni/615ae685136833.67761440-180.jpg" }, "mints": [ @@ -147,5 +140,6 @@ "id": "16", "name": "Royal Mint" } - ] + ], + "color": "rgb(150.16666666666666,130.33333333333331,104.83333333333333)" } diff --git a/public/coins/usa/42.json b/public/coins/usa/42.json index 44531c7..62be6ab 100644 --- a/public/coins/usa/42.json +++ b/public/coins/usa/42.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Victor David Brenner" - ], + "engravers": ["Victor David Brenner"], "description": "The portrait of Abraham Lincoln, the 16th President of the United States from 1861 to 1865, facing right accompanied by the lettering \"LIBERTY\" and the motto \"IN GOD WE TRUST\".\r\n\r\nNOTE: Cents dated 1968-1974 bearing an \"S\" mintmark are most likely not proofs. The San Francisco Mint struck this coin for circulation as well as all proofs for this type. \"S\" cents dated 1975 and later are always proofs.", "lettering": "IN GOD WE TRUST\r\nLIBERTY\r\n1978\r\nS\r\nV D B", "lettering_scripts": [ @@ -48,16 +46,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/60a7cd50afd856.85546909-original.jpg", + "picture": "/photos/etats-unis/60a7cd50afd856.85546909-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/60a7cd50afd856.85546909-180.jpg", "picture_copyright": "Pinheiro, Rafael", "picture_license_name": "CC BY-SA", "picture_license_url": "https://creativecommons.org/licenses/by-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Frank Gasparro" - ], + "engravers": ["Frank Gasparro"], "description": "The Lincoln Memorial surrounded with the face value in full, the lettering: \"UNITED STATES OF AMERICA\" and the motto: \"E • PLURIBUS • UNUM •\".", "lettering": "UNITED STATES OF AMERICA\r\nE • PLURIBUS \r\n• UNUM • \r\nFG\r\nONE CENT", "lettering_scripts": [ @@ -66,7 +62,7 @@ } ], "lettering_translation": "Out of Many One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/60a7cd51217f39.20669591-original.jpg", + "picture": "/photos/etats-unis/60a7cd51217f39.20669591-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/60a7cd51217f39.20669591-180.jpg", "picture_copyright": "Pinheiro, Rafael", "picture_license_name": "CC BY-SA", @@ -86,10 +82,7 @@ "maxYear": 2008 } ], - "tags": [ - "Other building", - "Politician" - ], + "tags": ["Other building", "Politician"], "references": [ { "catalogue": { @@ -112,7 +105,7 @@ "orientation": "coin", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3289-original.jpg", + "picture": "/photos/etats-unis/3289-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3289-180.jpg", "picture_copyright": "Cyrillius" }, @@ -137,5 +130,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(196,114,56)" } diff --git a/public/coins/usa/43.json b/public/coins/usa/43.json index f644898..df8432a 100644 --- a/public/coins/usa/43.json +++ b/public/coins/usa/43.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Victor David Brenner" - ], + "engravers": ["Victor David Brenner"], "description": "The portrait in right profile of Abraham Lincoln, the 16th President of the United States from 1861 to 1865, is accompanied with the lettering \"LIBERTY\" and the motto \"IN GOD WE TRUST\".", "lettering": "IN GOD WE TRUST\r\nLIBERTY\r\n2007\r\nVDB", "lettering_scripts": [ @@ -48,14 +46,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/627fa60e7729f9.86339073-original.jpg", + "picture": "/photos/etats-unis/627fa60e7729f9.86339073-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/627fa60e7729f9.86339073-180.jpg", "picture_copyright": "Nyxain" }, "reverse": { - "engravers": [ - "Frank Gasparro" - ], + "engravers": ["Frank Gasparro"], "description": "The Lincoln Memorial is surrounded with the face value in full, the lettering : \"UNITED STATES oF AMERICA\" and the motto : \"E • PLURIBUS • UNUM •\".", "lettering": "UNITED STATES oF AMERICA\r\nE • PLURIBUS • UNUM •\r\nFG\r\nONE CENT", "lettering_scripts": [ @@ -64,7 +60,7 @@ } ], "lettering_translation": "Out of Many, One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/627fa60ea6c6b3.15582220-original.jpg", + "picture": "/photos/etats-unis/627fa60ea6c6b3.15582220-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/627fa60ea6c6b3.15582220-180.jpg", "picture_copyright": "Nyxain" }, @@ -82,10 +78,7 @@ "maxYear": 1982 } ], - "tags": [ - "Other building", - "Politician" - ], + "tags": ["Other building", "Politician"], "references": [ { "catalogue": { @@ -115,7 +108,7 @@ "orientation": "coin", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3151-original.jpg", + "picture": "/photos/etats-unis/3151-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3151-180.jpg", "picture_copyright": "Cyrillius" }, @@ -136,5 +129,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(134,96,44)" } diff --git a/public/coins/usa/44.json b/public/coins/usa/44.json index cff66db..14a2a85 100644 --- a/public/coins/usa/44.json +++ b/public/coins/usa/44.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Felix Schlag" - ], + "engravers": ["Felix Schlag"], "description": "The portrait of Thomas Jefferson, the 3rd president of the U.S. from 1801 to 1809.", "lettering": "IN GOD WE TRUST\r\nLIBERTY * 1978 S\r\nFS", "lettering_scripts": [ @@ -48,16 +46,14 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/6214498a93dd11.94704126-original.jpg", + "picture": "/photos/etats-unis/6214498a93dd11.94704126-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/6214498a93dd11.94704126-180.jpg", "picture_copyright": "EZE711CBA", "picture_license_name": "CC BY-NC-SA", "picture_license_url": "https://creativecommons.org/licenses/by-nc-sa/4.0/deed.en" }, "reverse": { - "engravers": [ - "Felix Schlag" - ], + "engravers": ["Felix Schlag"], "description": "A representation of Monticello, President Thomas Jefferson's Virginia home.", "lettering": "E PLURIBUS UNUM \r\nMONTICELLO\r\nFIVE CENTS\r\nUNITED STATES OF AMERICA", "lettering_scripts": [ @@ -66,7 +62,7 @@ } ], "lettering_translation": "OUT OF MANY, ONE", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/6214498b59e507.16200277-original.jpg", + "picture": "/photos/etats-unis/6214498b59e507.16200277-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/6214498b59e507.16200277-180.jpg", "picture_copyright": "EZE711CBA", "picture_license_name": "CC BY-NC-SA", @@ -86,10 +82,7 @@ "maxYear": 1945 } ], - "tags": [ - "Other building", - "Politician" - ], + "tags": ["Other building", "Politician"], "references": [ { "catalogue": { @@ -119,7 +112,7 @@ "orientation": "coin", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3162-original.jpg", + "picture": "/photos/etats-unis/3162-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3162-180.jpg", "picture_copyright": "Cyrillius" }, @@ -144,5 +137,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(68,64,160)" } diff --git a/public/coins/usa/53.json b/public/coins/usa/53.json index 408adac..ea84f72 100644 --- a/public/coins/usa/53.json +++ b/public/coins/usa/53.json @@ -38,9 +38,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "John R. Sinnock" - ], + "engravers": ["John R. Sinnock"], "description": "The portrait of Franklin D. Roosevelt facing left, the 32nd President of the United States from 1933 to his death in 1945, accompanied by the motto: \"IN GOD WE TRUST\" and surrounded with the lettering \"LIBERTY\".", "lettering": "LIBERTY \r\nIN GOD WE TRUST \r\n2017 P\r\nJS", "lettering_scripts": [ @@ -48,14 +46,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/5226-original.jpg", + "picture": "/photos/etats-unis/5226-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/5226-180.jpg", "picture_copyright": "Essor Prof" }, "reverse": { - "engravers": [ - "John R. Sinnock" - ], + "engravers": ["John R. Sinnock"], "description": "Ahead of the motto \"E • PLU RIB US • U NUM\", an olive branch, a torch, and an oak branch symbolize respectively peace, liberty, and victory and are surrounded with the face value and the lettering \"UNITED STATES OF AMERICA\"", "lettering": "E • PLURIBUS • UNUM \r\nUNITED STATES OF AMERICA \r\n• ONE DIME •", "lettering_scripts": [ @@ -64,7 +60,7 @@ } ], "lettering_translation": "Out of Many, One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/5225-original.jpg", + "picture": "/photos/etats-unis/5225-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/5225-180.jpg", "picture_copyright": "Essor Prof" }, @@ -104,9 +100,7 @@ "maxYear": 2023 } ], - "tags": [ - "Politician" - ], + "tags": ["Politician"], "references": [ { "catalogue": { @@ -129,7 +123,7 @@ "orientation": "coin", "edge": { "description": "Reeded (118 reeds)", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3290-original.jpg", + "picture": "/photos/etats-unis/3290-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3290-180.jpg", "picture_copyright": "Cyrillius" }, @@ -162,5 +156,6 @@ "id": "13", "name": "United States Mint of West Point" } - ] + ], + "color": "rgb(151.83206106870227,128.47328244274811,103.16793893129774)" } diff --git a/public/coins/usa/55.json b/public/coins/usa/55.json index 808fe52..6d5a376 100644 --- a/public/coins/usa/55.json +++ b/public/coins/usa/55.json @@ -40,9 +40,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "John Flanagan" - ], + "engravers": ["John Flanagan"], "description": "The portrait in left profile of George Washington, the first President of the United States from 1789 to 1797, is accompanied with the motto: \"IN GOD WE TRUST\" and surrounded with the lettering: \"LIBERTY\"\r\n\r\nNOTE: KM#164a reprised after 1977 as KM#A164a", "lettering": "LIBERTY \r\nIN GOD WE TRUST\r\nJF \r\n1998 D", "lettering_scripts": [ @@ -50,14 +48,12 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/2859-original.jpg", + "picture": "/photos/etats-unis/2859-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/2859-180.jpg", "picture_copyright": "nalaberong" }, "reverse": { - "engravers": [ - "John Flanagan" - ], + "engravers": ["John Flanagan"], "description": "An eagle, wings spread, and standing on a shaft of arrows with two olive sprays beneath the eagle, is surrounded with the face value, the motto \"E PLURIBUS UNUM\" and the lettering \"UNITED STATES OF AMERICA\"", "lettering": "UNITED STATES OF AMERICA\r\nE PLURIBUS\r\nUNUM\r\n\r\nQUARTER DOLLAR", "lettering_scripts": [ @@ -66,7 +62,7 @@ } ], "lettering_translation": "Out of Many One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/2860-original.jpg", + "picture": "/photos/etats-unis/2860-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/2860-180.jpg", "picture_copyright": "nalaberong" }, @@ -95,12 +91,7 @@ "maxYear": 1998 } ], - "tags": [ - "Bird", - "Eagle", - "Military leader", - "Politician" - ], + "tags": ["Bird", "Eagle", "Military leader", "Politician"], "references": [ { "catalogue": { @@ -130,7 +121,7 @@ "orientation": "coin", "edge": { "description": "Reeded (119 reeds)", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3174-original.jpg", + "picture": "/photos/etats-unis/3174-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3174-180.jpg", "picture_copyright": "Cyrillius" }, @@ -159,5 +150,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(132.68292682926833,124.39024390243898,122.31707317073166)" } diff --git a/public/coins/usa/614.json b/public/coins/usa/614.json index 4aa541b..97b9221 100644 --- a/public/coins/usa/614.json +++ b/public/coins/usa/614.json @@ -39,10 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "John Flanagan", - "William Cousins" - ], + "engravers": ["John Flanagan", "William Cousins"], "description": "The portrait in left profile of George Washington, the first President of the United States from 1789 to 1797, is accompanied with the motto \"IN GOD WE TRUST\" and the lettering \"LIBERTY\" and it is surrounded with the face value and the inscription \"UNITED STATES OF AMERICA\"", "lettering": "UNITED STATES OF AMERICA\r\nIN\r\nGOD WE\r\nTRUST\r\nLIBERTY P\r\nJF WC\r\nQUARTER DOLLAR", "lettering_scripts": [ @@ -50,15 +47,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/4876-original.jpg", + "picture": "/photos/etats-unis/4876-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/4876-180.jpg", "picture_copyright": "United States Mint", "picture_copyright_url": "http://www.usmint.gov" }, "reverse": { - "engravers": [ - "Alfred Maletsky" - ], + "engravers": ["Alfred Maletsky"], "description": "The Statue of Liberty against a map of the state displaying a line tracing the Hudson River and the route of the Erie Canal is accompanied with the state's name (\"NEW YORK\"), the date of its admission into Union (\"1788\"), the words (\"GATEWAY TO FREEDOM\"), 11 stars, signifying the fact that New York was the 11th state to ratify the Constitution, and the motto \"E PLURIBUS UNUM\", designed by Daniel Carr", "lettering": "NEW YORK\r\n1788\r\nGATEWAY\r\nTO\r\nFREEDOM\r\nAM\r\n2001\r\nE PLURIBUS UNUM", "lettering_scripts": [ @@ -67,7 +62,7 @@ } ], "lettering_translation": "Out of Many, One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/4877-original.jpg", + "picture": "/photos/etats-unis/4877-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/4877-180.jpg", "picture_copyright": "United States Mint", "picture_copyright_url": "http://www.usmint.gov" @@ -87,11 +82,7 @@ "maxYear": 2001 } ], - "tags": [ - "Sculpture", - "Politician", - "Map" - ], + "tags": ["Sculpture", "Politician", "Map"], "references": [ { "catalogue": { @@ -114,7 +105,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3170-original.jpg", + "picture": "/photos/etats-unis/3170-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3170-180.jpg", "picture_copyright": "Cyrillius" }, @@ -131,5 +122,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(127.5,127.5,127.5)" } diff --git a/public/coins/usa/648.json b/public/coins/usa/648.json index a3ead98..4ea1f4d 100644 --- a/public/coins/usa/648.json +++ b/public/coins/usa/648.json @@ -39,10 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "John Flanagan", - "William Cousins" - ], + "engravers": ["John Flanagan", "William Cousins"], "description": "The portrait in left profile of George Washington, the first President of the United Stats from 1789 to 1797, is accompanied with the motto \"IN GOD WE TRUST\" and the lettering \"LIBERTY\" and it is surrounded with the face value and the inscription \"UNITED STATES OF AMERICA\"", "lettering": "UNITED STATES OF AMERICA\r\nIN\r\nGOD WE\r\nTRUST\r\nLIBERTY P\r\nJF WC\r\nQUARTER DOLLAR", "lettering_scripts": [ @@ -50,15 +47,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/4854-original.jpg", + "picture": "/photos/etats-unis/4854-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/4854-180.jpg", "picture_copyright": "United States Mint", "picture_copyright_url": "http://www.usmint.gov" }, "reverse": { - "engravers": [ - "Joseph Menna" - ], + "engravers": ["Joseph Menna"], "description": "Two locomotives moving toward the golden spike that joins Central Pacific and Union Pacific railroads.", "lettering": "UTAH\r\n1896\r\nCROSSROADS OF THE WEST\r\nJFM\r\n2007\r\nE PLURIBUS UNUM", "lettering_scripts": [ @@ -67,7 +62,7 @@ } ], "lettering_translation": "Utah\r\n1896\r\nCrossroads of the West\r\nJFM\r\n2007\r\nOut of Many, One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/4855-original.jpg", + "picture": "/photos/etats-unis/4855-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/4855-180.jpg", "picture_copyright": "United States Mint", "picture_copyright_url": "http://www.usmint.gov" @@ -87,10 +82,7 @@ "maxYear": 2007 } ], - "tags": [ - "Mountain", - "Train" - ], + "tags": ["Mountain", "Train"], "references": [ { "catalogue": { @@ -113,7 +105,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3196-original.jpg", + "picture": "/photos/etats-unis/3196-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3196-180.jpg", "picture_copyright": "Cyrillius" }, @@ -130,5 +122,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(127.5,127.5,127.5)" } diff --git a/public/coins/usa/649.json b/public/coins/usa/649.json index 9fdbc38..cd81c12 100644 --- a/public/coins/usa/649.json +++ b/public/coins/usa/649.json @@ -39,10 +39,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "John Flanagan", - "William Cousins" - ], + "engravers": ["John Flanagan", "William Cousins"], "description": "The portrait in left profile of George Washington, the first President of the United States from 1789 to 1797, is accompanied with the motto \"IN GOD WE TRUST\" and the lettering \"LIBERTY\" and it is surrounded with the face value and the inscription \"UNITED STATES OF AMERICA\"", "lettering": "UNITED STATES OF AMERICA\r\nIN \r\nGOD WE \r\nTRUST\r\nLIBERTY P\r\nJF WC\r\nQUARTER DOLLAR", "lettering_scripts": [ @@ -50,15 +47,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/4946-original.jpg", + "picture": "/photos/etats-unis/4946-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/4946-180.jpg", "picture_copyright": "United States Mint", "picture_copyright_url": "http://www.usmint.gov" }, "reverse": { - "engravers": [ - "Phebe Hemphill" - ], + "engravers": ["Phebe Hemphill"], "description": "Scissor-tailed Flycatcher, Oklahoma's State Bird, in flight with its distinctive tail feathers spread. The bird is soaring over the State wildflower, the Indian Blanket, backed by a field of similar wildflowers.", "lettering": "OKLAHOMA \r\n1907\r\nPH\r\n2008\r\nE PLURIBUS UNUM", "lettering_scripts": [ @@ -67,7 +62,7 @@ } ], "lettering_translation": "Oklahoma\r\n1907\r\nPH\r\n2008\r\nOut of Many, One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/4947-original.jpg", + "picture": "/photos/etats-unis/4947-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/4947-180.jpg", "picture_copyright": "United States Mint", "picture_copyright_url": "http://www.usmint.gov" @@ -87,10 +82,7 @@ "maxYear": 2008 } ], - "tags": [ - "Bird", - "Flower" - ], + "tags": ["Bird", "Flower"], "references": [ { "catalogue": { @@ -113,7 +105,7 @@ "orientation": "coin", "edge": { "description": "Reeded", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3195-original.jpg", + "picture": "/photos/etats-unis/3195-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3195-180.jpg", "picture_copyright": "Cyrillius" }, @@ -130,5 +122,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(127.5,127.5,127.5)" } diff --git a/public/coins/usa/908.json b/public/coins/usa/908.json index 48a9431..a1ce8b5 100644 --- a/public/coins/usa/908.json +++ b/public/coins/usa/908.json @@ -37,9 +37,7 @@ "text": "Milled" }, "obverse": { - "engravers": [ - "Victor David Brenner" - ], + "engravers": ["Victor David Brenner"], "description": "The portrait of Abraham Lincoln facing right with the date to the right, and the mintmark (if present) below the date.\r\n\r\nBrenner's initials \"VDB\" were restored in 1918, and his initials were placed inconspicuously beneath the shoulder of Lincoln on this obverse side.", "lettering": "IN GOD WE TRUST\r\nLIBERTY\r\n1925\r\nD\r\nVDB", "lettering_scripts": [ @@ -47,15 +45,13 @@ "name": "Latin" } ], - "picture": "https://en.numista.com/catalogue/photos/etats-unis/1116-original.jpg", + "picture": "/photos/etats-unis/1116-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/1116-180.jpg", "picture_copyright": "Heritage Auctions", "picture_copyright_url": "http://www.ha.com" }, "reverse": { - "engravers": [ - "Victor David Brenner" - ], + "engravers": ["Victor David Brenner"], "description": "Two wheat ears surrounding lettering.\r\n\r\nOn some of the 1909 issues, Brenner's initials appear on the bottom of the reverse side. They were removed that year, thus creating two varieties for each of the two mints in 1909.", "lettering": "E·PLURIBUS·UNUM\r\nONE CENT\r\nUNITED STATES OF AMERICA", "lettering_scripts": [ @@ -64,7 +60,7 @@ } ], "lettering_translation": "Out of Many One", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/1117-original.jpg", + "picture": "/photos/etats-unis/1117-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/1117-180.jpg", "picture_copyright": "Heritage Auctions", "picture_copyright_url": "http://www.ha.com" @@ -83,9 +79,7 @@ "maxYear": 1944 } ], - "tags": [ - "Politician" - ], + "tags": ["Politician"], "references": [ { "catalogue": { @@ -115,7 +109,7 @@ "orientation": "coin", "edge": { "description": "Smooth", - "picture": "https://en.numista.com/catalogue/photos/etats-unis/3287-original.jpg", + "picture": "/photos/etats-unis/3287-original.jpg", "thumbnail": "https://en.numista.com/catalogue/photos/etats-unis/3287-180.jpg", "picture_copyright": "Cyrillius" }, @@ -132,5 +126,6 @@ "id": "12", "name": "United States Mint of San Francisco" } - ] + ], + "color": "rgb(246,141,60)" } diff --git a/public/vite.svg b/public/vite.svg deleted file mode 100644 index e7b8dfb..0000000 --- a/public/vite.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/App.css b/src/App.css deleted file mode 100644 index b9d355d..0000000 --- a/src/App.css +++ /dev/null @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.tsx b/src/App.tsx index 52ea980..875c021 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,35 +1,7 @@ -import { useState } from "react"; -import reactLogo from "./assets/react.svg"; -import viteLogo from "/vite.svg"; -import "./App.css"; +import { Scene } from "./components/scene"; function App() { - const [count, setCount] = useState(0); - - return ( - <> - -

Vite + React

-
- -

- Edit src/App.tsx and save to test HMR -

-
-

- Click on the Vite and React logos to learn more -

- - ); + return ; } export default App; diff --git a/src/assets/react.svg b/src/assets/react.svg deleted file mode 100644 index 6c87de9..0000000 --- a/src/assets/react.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/components/scene/coin-instances.tsx b/src/components/scene/coin-instances.tsx new file mode 100644 index 0000000..5334faa --- /dev/null +++ b/src/components/scene/coin-instances.tsx @@ -0,0 +1,46 @@ +import { CoinInstance } from "./coin"; +import { useEffect, useRef } from "react"; +import { CoinProps } from "../../types/coin"; +import { InstancedMesh, Object3D } from "three"; + +export const CoinInstances = ({ + coinProps, + temp = new Object3D(), +}: { + coinProps: CoinProps; + temp?: Object3D; +}) => { + const count = coinProps.count ?? 1; + const instancedMeshRef = useRef(null!); + + useEffect(() => { + // Set positions + for (let i = 0; i < count; i++) { + temp.position.set( + Math.random() * 64 - 32, + Math.random() * 16 - 8, + Math.random() * 64 - 32, + ); + temp.rotation.set( + Math.random() * 4 - 2, + Math.random() * 4 - 2, + Math.random() * 4 - 2, + ); + temp.updateMatrix(); + instancedMeshRef.current.setMatrixAt(i, temp.matrix); + } + // Update the instance + instancedMeshRef.current.instanceMatrix.needsUpdate = true; + }, [count, temp]); + + return ( + + + + ); +}; diff --git a/src/components/scene/coin.tsx b/src/components/scene/coin.tsx new file mode 100644 index 0000000..086e2d0 --- /dev/null +++ b/src/components/scene/coin.tsx @@ -0,0 +1,35 @@ +import * as THREE from "three"; +import { useLoader } from "@react-three/fiber"; +import { CoinProps } from "../../types/coin"; + +export const CoinInstance = ({ + size, + thickness, + color, + obverse, + reverse, +}: CoinProps) => { + //const edgeTexture = useLoader(THREE.TextureLoader, edge.picture); + const obverseTexture = useLoader(THREE.TextureLoader, obverse.picture); + const reverseTexture = useLoader(THREE.TextureLoader, reverse.picture); + + return ( + <> + + + + + + ); +}; diff --git a/src/components/scene/index.tsx b/src/components/scene/index.tsx new file mode 100644 index 0000000..d764fa2 --- /dev/null +++ b/src/components/scene/index.tsx @@ -0,0 +1,90 @@ +import { Canvas, MeshProps } from "@react-three/fiber"; +import { OrbitControls } from "@react-three/drei"; +import { Suspense, useEffect, useState } from "react"; +import { CoinProps } from "../../types/coin"; +import { CoinInstances } from "./coin-instances"; + +const testCoins = [ +100658, +1324, +1376, +1384, +1389, +1390, +1395, +1397, +20700, +2236, +25746, +25766, +2763, +4038, +4039, +5628, +573, +6612, +664, +665, +70547, +7398, +861, +862, +863, +864, +865, +867, +868, +875, +876, +879, +]; + +const CoinHelper = ({ id }: { id: number }) => { + const [coinProps, setCoinProps] = useState(); + + useEffect(() => { + fetch("/coins/uk/" + id + ".json").then((res) => + res.json().then(setCoinProps), + ); + }, [id]); + + if (!coinProps) { + return; + } + + return ; +}; + +const LightBulb = (props: Pick) => ( + <> + + + + + + + + + + + + +) + +export const Scene = () => ( + + + + + + + + + {testCoins.map((id) => ( + + + + ))} + + +); diff --git a/src/index.css b/src/index.css index 2c3fac6..9fe1377 100644 --- a/src/index.css +++ b/src/index.css @@ -1,69 +1,7 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - -webkit-text-size-adjust: 100%; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - body { margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; } -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } +#root { + height: 100vh; } diff --git a/src/main.tsx b/src/main.tsx index f25366e..bda4cd7 100644 --- a/src/main.tsx +++ b/src/main.tsx @@ -1,9 +1,9 @@ +import "./index.css"; import React from "react"; import ReactDOM from "react-dom/client"; -import App from "./App.tsx"; -import "./index.css"; +import App from "./App"; -ReactDOM.createRoot(document.getElementById("root")!).render( +ReactDOM.createRoot(document.getElementById("root") as HTMLElement).render( , diff --git a/src/types/coin.ts b/src/types/coin.ts new file mode 100644 index 0000000..bb1bd63 --- /dev/null +++ b/src/types/coin.ts @@ -0,0 +1,75 @@ +type Face = { + engravers: string[]; + description: string; + lettering: string; + lettering_scripts: Array<{ + name: string; + }>; + picture: string; + thumbnail: string; + picture_copyright: string; +}; + +export type CoinProps = { + id: number; + url: string; + title: string; + category: "coin" | "exonumia"; + issuer: { + code: string; + name: string; + }; + min_year: number; + max_year: number; + type: string; + ruler: Array<{ + id: number; + name: string; + wikidata_id: string; + }>; + value: { + text: string; + numeric_value: number; + currency: { + id: number; + name: string; + full_name: string; + }; + }; + demonetization: { + is_demonetized: boolean; + }; + shape: string; + composition: { + text: string; + }; + technique: { + text: string; + }; + obverse: Face; + reverse: Face; + comments: string; + references: Array<{ + catalogue: { + id: number; + code: string; + }; + number: string; + }>; + weight: number; + size: number; + thickness: number; + orientation: "medal" | "coin"; + edge: { + description: string; + picture: string; + thumbnail: string; + picture_copyright: string; + }; + mints: Array<{ + id: string; + name: string; + }>; + count?: number; + color?: string; +}; diff --git a/yarn.lock b/yarn.lock index 09b25db..de90e31 100644 --- a/yarn.lock +++ b/yarn.lock @@ -7,7 +7,7 @@ resolved "https://registry.yarnpkg.com/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz#bd9154aec9983f77b3a034ecaa015c2e4201f6cf" integrity sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA== -"@babel/runtime@^7.17.8": +"@babel/runtime@^7.11.2", "@babel/runtime@^7.17.8", "@babel/runtime@^7.7.2": version "7.22.15" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.22.15.tgz#38f46494ccf6cf020bd4eed7124b425e83e523b8" integrity sha512-T0O+aa+4w0u06iNmapipJXMV4HoUir03hpx3/YqXXhu9xim3w+dVphjFWl1OH8NbZHw5Lbm9k45drDkgq2VNNA== @@ -175,6 +175,110 @@ resolved "https://registry.yarnpkg.com/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz#b520529ec21d8e5945a1851dfd1c32e94e39ff45" integrity sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA== +"@jimp/bmp@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/bmp/-/bmp-0.16.13.tgz#57ffa5b17417b5a181f6f184bdabc8218e8448ef" + integrity sha512-9edAxu7N2FX7vzkdl5Jo1BbACfycUtBQX+XBMcHA2bk62P8R0otgkHg798frgAk/WxQIzwxqOH6wMiCwrlAzdQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.16.13" + bmp-js "^0.1.0" + +"@jimp/core@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/core/-/core-0.16.13.tgz#7171745a912b5b847f8bf53e70b0672c5ca92744" + integrity sha512-qXpA1tzTnlkTku9yqtuRtS/wVntvE6f3m3GNxdTdtmc+O+Wcg9Xo2ABPMh7Nc0AHbMKzwvwgB2JnjZmlmJEObg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.16.13" + any-base "^1.1.0" + buffer "^5.2.0" + exif-parser "^0.1.12" + file-type "^16.5.4" + load-bmfont "^1.3.1" + mkdirp "^0.5.1" + phin "^2.9.1" + pixelmatch "^4.0.2" + tinycolor2 "^1.4.1" + +"@jimp/custom@^0.16.1": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/custom/-/custom-0.16.13.tgz#2e4ed447b7410b81fe9103682b4166af904daf84" + integrity sha512-LTATglVUPGkPf15zX1wTMlZ0+AU7cGEGF6ekVF1crA8eHUWsGjrYTB+Ht4E3HTrCok8weQG+K01rJndCp/l4XA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/core" "^0.16.13" + +"@jimp/gif@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/gif/-/gif-0.16.13.tgz#fa72f35d8ad67d6ce3a3d7ef6c8d04a462afaaf9" + integrity sha512-yFAMZGv3o+YcjXilMWWwS/bv1iSqykFahFMSO169uVMtfQVfa90kt4/kDwrXNR6Q9i6VHpFiGZMlF2UnHClBvg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.16.13" + gifwrap "^0.9.2" + omggif "^1.0.9" + +"@jimp/jpeg@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/jpeg/-/jpeg-0.16.13.tgz#e1c128a591bd7f8a26c8731fd0bc65d32d4ba32a" + integrity sha512-BJHlDxzTlCqP2ThqP8J0eDrbBfod7npWCbJAcfkKqdQuFk0zBPaZ6KKaQKyKxmWJ87Z6ohANZoMKEbtvrwz1AA== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.16.13" + jpeg-js "^0.4.2" + +"@jimp/plugin-resize@^0.16.1": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/plugin-resize/-/plugin-resize-0.16.13.tgz#6267087f724d47e7bb8824c5b842d9315f50b8e7" + integrity sha512-qoqtN8LDknm3fJm9nuPygJv30O3vGhSBD2TxrsCnhtOsxKAqVPJtFVdGd/qVuZ8nqQANQmTlfqTiK9mVWQ7MiQ== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.16.13" + +"@jimp/png@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/png/-/png-0.16.13.tgz#8b130cc5e1e754c074c42fa3fe2609897cefdf7c" + integrity sha512-8cGqINvbWJf1G0Her9zbq9I80roEX0A+U45xFby3tDWfzn+Zz8XKDF1Nv9VUwVx0N3zpcG1RPs9hfheG4Cq2kg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/utils" "^0.16.13" + pngjs "^3.3.3" + +"@jimp/tiff@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/tiff/-/tiff-0.16.13.tgz#9cf8d19f2b0b0c46758e81acfc7d656835ee6da1" + integrity sha512-oJY8d9u95SwW00VPHuCNxPap6Q1+E/xM5QThb9Hu+P6EGuu6lIeLaNBMmFZyblwFbwrH+WBOZlvIzDhi4Dm/6Q== + dependencies: + "@babel/runtime" "^7.7.2" + utif "^2.0.1" + +"@jimp/types@^0.16.1": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/types/-/types-0.16.13.tgz#39be1886cbfa4fb5e77e17441a046a1f961d3046" + integrity sha512-mC0yVNUobFDjoYLg4hoUwzMKgNlxynzwt3cDXzumGvRJ7Kb8qQGOWJQjQFo5OxmGExqzPphkirdbBF88RVLBCg== + dependencies: + "@babel/runtime" "^7.7.2" + "@jimp/bmp" "^0.16.13" + "@jimp/gif" "^0.16.13" + "@jimp/jpeg" "^0.16.13" + "@jimp/png" "^0.16.13" + "@jimp/tiff" "^0.16.13" + timm "^1.6.1" + +"@jimp/utils@^0.16.13": + version "0.16.13" + resolved "https://registry.yarnpkg.com/@jimp/utils/-/utils-0.16.13.tgz#afde41b9c6cdadfb45d83cb5e16deb65f369bf99" + integrity sha512-VyCpkZzFTHXtKgVO35iKN0sYR10psGpV6SkcSeV4oF7eSYlR8Bl6aQLCzVeFjvESF7mxTmIiI3/XrMobVrtxDA== + dependencies: + "@babel/runtime" "^7.7.2" + regenerator-runtime "^0.13.3" + +"@mediapipe/tasks-vision@0.10.2": + version "0.10.2" + resolved "https://registry.yarnpkg.com/@mediapipe/tasks-vision/-/tasks-vision-0.10.2.tgz#eae193cf4a5c57baf2b235decde288b5152ee433" + integrity sha512-d8Q9uRK89ZRWmED2JLI9/blpJcfdbh0iEUuMo8TgkMzNfQBY1/GC0FEJWrairTwHkxIf6Oud1vFBP+aHicWqJA== + "@nodelib/fs.scandir@2.1.5": version "2.1.5" resolved "https://registry.yarnpkg.com/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz#7619c2eb21b25483f6d167548b4cfd5a7488c3d5" @@ -196,7 +300,82 @@ "@nodelib/fs.scandir" "2.1.5" fastq "^1.6.0" -"@react-three/fiber@^8.14.1": +"@react-spring/animated@~9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@react-spring/animated/-/animated-9.6.1.tgz#ccc626d847cbe346f5f8815d0928183c647eb425" + integrity sha512-ls/rJBrAqiAYozjLo5EPPLLOb1LM0lNVQcXODTC1SMtS6DbuBCPaKco5svFUQFMP2dso3O+qcC4k9FsKc0KxMQ== + dependencies: + "@react-spring/shared" "~9.6.1" + "@react-spring/types" "~9.6.1" + +"@react-spring/core@~9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@react-spring/core/-/core-9.6.1.tgz#ebe07c20682b360b06af116ea24e2b609e778c10" + integrity sha512-3HAAinAyCPessyQNNXe5W0OHzRfa8Yo5P748paPcmMowZ/4sMfaZ2ZB6e5x5khQI8NusOHj8nquoutd6FRY5WQ== + dependencies: + "@react-spring/animated" "~9.6.1" + "@react-spring/rafz" "~9.6.1" + "@react-spring/shared" "~9.6.1" + "@react-spring/types" "~9.6.1" + +"@react-spring/rafz@~9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@react-spring/rafz/-/rafz-9.6.1.tgz#d71aafb92b78b24e4ff84639f52745afc285c38d" + integrity sha512-v6qbgNRpztJFFfSE3e2W1Uz+g8KnIBs6SmzCzcVVF61GdGfGOuBrbjIcp+nUz301awVmREKi4eMQb2Ab2gGgyQ== + +"@react-spring/shared@~9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@react-spring/shared/-/shared-9.6.1.tgz#4e2e4296910656c02bd9fd54c559702bc836ac4e" + integrity sha512-PBFBXabxFEuF8enNLkVqMC9h5uLRBo6GQhRMQT/nRTnemVENimgRd+0ZT4yFnAQ0AxWNiJfX3qux+bW2LbG6Bw== + dependencies: + "@react-spring/rafz" "~9.6.1" + "@react-spring/types" "~9.6.1" + +"@react-spring/three@~9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@react-spring/three/-/three-9.6.1.tgz#095fcd1dc6509127c33c14486d88289b89baeb9d" + integrity sha512-Tyw2YhZPKJAX3t2FcqvpLRb71CyTe1GvT3V+i+xJzfALgpk10uPGdGaQQ5Xrzmok1340DAeg2pR/MCfaW7b8AA== + dependencies: + "@react-spring/animated" "~9.6.1" + "@react-spring/core" "~9.6.1" + "@react-spring/shared" "~9.6.1" + "@react-spring/types" "~9.6.1" + +"@react-spring/types@~9.6.1": + version "9.6.1" + resolved "https://registry.yarnpkg.com/@react-spring/types/-/types-9.6.1.tgz#913d3a68c5cbc1124fdb18eff919432f7b6abdde" + integrity sha512-POu8Mk0hIU3lRXB3bGIGe4VHIwwDsQyoD1F394OK7STTiX9w4dG3cTLljjYswkQN+hDSHRrj4O36kuVa7KPU8Q== + +"@react-three/drei@^9.83.9": + version "9.83.9" + resolved "https://registry.yarnpkg.com/@react-three/drei/-/drei-9.83.9.tgz#a83a68441c627ba20ddf0c99604c15e5db9a0f1d" + integrity sha512-WFwySXDbockMpOWCsx12JXEvWZgakw3LOmdiXYpd9kb5fJ+fBgaK4bNLMbJymfadpVIXjVaovWMqzUI98W1pxw== + dependencies: + "@babel/runtime" "^7.11.2" + "@mediapipe/tasks-vision" "0.10.2" + "@react-spring/three" "~9.6.1" + "@use-gesture/react" "^10.2.24" + camera-controls "^2.4.2" + cross-env "^7.0.3" + detect-gpu "^5.0.28" + glsl-noise "^0.0.0" + lodash.clamp "^4.0.3" + lodash.omit "^4.5.0" + lodash.pick "^4.4.0" + maath "^0.6.0" + meshline "^3.1.6" + react-composer "^5.0.3" + react-merge-refs "^1.1.0" + stats-gl "^1.0.4" + stats.js "^0.17.0" + suspend-react "^0.1.3" + three-mesh-bvh "^0.6.0" + three-stdlib "^2.25.1" + troika-three-text "^0.47.2" + utility-types "^3.10.0" + zustand "^3.5.13" + +"@react-three/fiber@^8.13.0": version "8.14.1" resolved "https://registry.yarnpkg.com/@react-three/fiber/-/fiber-8.14.1.tgz#08a6b02946aa0a5a0e2dd558ddf6bb70dedc717f" integrity sha512-Ky/FiCyJiyaI8bd+vckzgkHgKDSQDOcSSUVFOHCuCO9XOLb7Ebs6lof2hPpFa1HkaeE5ZIbTWIprvN0QqdPF0w== @@ -284,11 +463,41 @@ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.4.tgz#8d647e111dc97a8e2881bf71c2ee2d011698ff10" integrity sha512-z/G02d+59gyyUb7KYhKi9jOhicek6QD2oMaotUyG+lUkybpXoV49dY9bj7Ah5Q+y7knK2jU67UTX9FyfGzaxQg== +"@tokenizer/token@^0.3.0": + version "0.3.0" + resolved "https://registry.yarnpkg.com/@tokenizer/token/-/token-0.3.0.tgz#fe98a93fe789247e998c75e74e9c7c63217aa276" + integrity sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A== + +"@tweenjs/tween.js@~18.6.4": + version "18.6.4" + resolved "https://registry.yarnpkg.com/@tweenjs/tween.js/-/tween.js-18.6.4.tgz#40a3d0a93647124872dec8e0fd1bd5926695b6ca" + integrity sha512-lB9lMjuqjtuJrx7/kOkqQBtllspPIN+96OvTCeJ2j5FEzinoAXTdAMFnDAQT1KVPRlnYfBrqxtqP66vDM40xxQ== + +"@types/draco3d@^1.4.0": + version "1.4.2" + resolved "https://registry.yarnpkg.com/@types/draco3d/-/draco3d-1.4.2.tgz#7faccb809db2a5e19b9efb97c5f2eb9d64d527ea" + integrity sha512-goh23EGr6CLV6aKPwN1p8kBD/7tT5V/bLpToSbarKrwVejqNrspVrv8DhliteYkkhZYrlq/fwKZRRUzH4XN88w== + "@types/json-schema@^7.0.12": version "7.0.12" resolved "https://registry.yarnpkg.com/@types/json-schema/-/json-schema-7.0.12.tgz#d70faba7039d5fca54c83c7dbab41051d2b6f6cb" integrity sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA== +"@types/node@16.9.1": + version "16.9.1" + resolved "https://registry.yarnpkg.com/@types/node/-/node-16.9.1.tgz#0611b37db4246c937feef529ddcc018cf8e35708" + integrity sha512-QpLcX9ZSsq3YYUUnD3nFDY8H7wctAhQj/TFKL8Ya8v5fMm3CFXxo8zStsLAl780ltoYoo1WvKUVGBQK+1ifr7g== + +"@types/node@^10.12.18": + version "10.17.60" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.60.tgz#35f3d6213daed95da7f0f73e75bcc6980e90597b" + integrity sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw== + +"@types/offscreencanvas@^2019.6.4": + version "2019.7.1" + resolved "https://registry.yarnpkg.com/@types/offscreencanvas/-/offscreencanvas-2019.7.1.tgz#1ac01f5dfed9e093663cc25c62310714fe282016" + integrity sha512-+HSrJgjBW77ALieQdMJvXhRZUIRN1597L+BKvsyeiIlHHERnqjcuOLyodK3auJ3Y3zRezNKtKAhuQWYJfEgFHQ== + "@types/prop-types@*": version "15.7.5" resolved "https://registry.yarnpkg.com/@types/prop-types/-/prop-types-15.7.5.tgz#5f19d2b85a98e9558036f6a3cacc8819420f05cf" @@ -339,17 +548,18 @@ resolved "https://registry.yarnpkg.com/@types/stats.js/-/stats.js-0.17.0.tgz#0ed81d48e03b590c24da85540c1d952077a9fe20" integrity sha512-9w+a7bR8PeB0dCT/HBULU2fMqf6BAzvKbxFboYhmDtDkKPiyXYbjoe2auwsXlEFI7CFNMF1dCv3dFH5Poy9R1w== -"@types/three@^0.156.0": - version "0.156.0" - resolved "https://registry.yarnpkg.com/@types/three/-/three-0.156.0.tgz#cd49f2a12e858400962ea818d1e1c45e638141a8" - integrity sha512-733bXDSRdlrxqOmQuOmfC1UBRuJ2pREPk8sWnx9MtIJEVDQMx8U0NQO5MVVaOrjzDPyLI+cFPim2X/ss9v0+LQ== +"@types/three@^0.152.0": + version "0.152.1" + resolved "https://registry.yarnpkg.com/@types/three/-/three-0.152.1.tgz#6f2ce49f7647c78855bc32544cc3e72145aa65cb" + integrity sha512-PMOCQnx9JRmq+2OUGTPoY9h1hTWD2L7/nmuW/SyNq1Vbq3Lwt3MNdl3wYSa4DvLTGv62NmIXD9jYdAOwohwJyw== dependencies: + "@tweenjs/tween.js" "~18.6.4" "@types/stats.js" "*" "@types/webxr" "*" - fflate "~0.6.10" - meshoptimizer "~0.18.1" + fflate "~0.6.9" + lil-gui "~0.17.0" -"@types/webxr@*": +"@types/webxr@*", "@types/webxr@^0.5.2": version "0.5.4" resolved "https://registry.yarnpkg.com/@types/webxr/-/webxr-0.5.4.tgz#3d55a6427f9281d456843d754c99bf7804657fe3" integrity sha512-41gfGLTtqXZhcmoDlLDHqMJDuwAMwhHwXf9Q2job3TUBsvkNfPNI/3IWVEtLH4tyY1ElWtfwIaoNeqeEX238/Q== @@ -439,6 +649,106 @@ "@typescript-eslint/types" "6.7.0" eslint-visitor-keys "^3.4.1" +"@use-gesture/core@10.2.27": + version "10.2.27" + resolved "https://registry.yarnpkg.com/@use-gesture/core/-/core-10.2.27.tgz#0f24b17c036cd828ba07e3451ff45e2df959c6f5" + integrity sha512-V4XV7hn9GAD2MYu8yBBVi5iuWBsAMfjPRMsEVzoTNGYH72tf0kFP+OKqGKc8YJFQIJx6yj+AOqxmEHOmx2/MEA== + +"@use-gesture/react@^10.2.24": + version "10.2.27" + resolved "https://registry.yarnpkg.com/@use-gesture/react/-/react-10.2.27.tgz#7fbd50d14449ec5bc49c9b6cfef8a2845f5e0608" + integrity sha512-7E5vnWCxeslWlxwZ8uKIcnUZVMTRMZ8cvSnLLKF1NkyNb3PnNiAzoXM4G1vTKJKRhgOTeI6wK1YsEpwo9ABV5w== + dependencies: + "@use-gesture/core" "10.2.27" + +"@vibrant/color@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/color/-/color-3.2.1-alpha.1.tgz#1bcee4545d2276d36f9a1acb42ab3485a9b489ec" + integrity sha512-cvm+jAPwao2NerTr3d1JttYyLhp3eD/AQBeevxF7KT6HctToWZCwr2AeTr003/wKgbjzdOV1qySnbyOeu+R+Jw== + +"@vibrant/core@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/core/-/core-3.2.1-alpha.1.tgz#9adff0835b5c750be3386ec01669d2a8d6389fdb" + integrity sha512-X9Oa9WfPEQnZ6L+5dLRlh+IlsxJkYTw9b/g3stFKoNXbVRKCeXHmH48l7jIBBOg3VcXOGUdsYBqsTwPNkIveaA== + dependencies: + "@vibrant/color" "^3.2.1-alpha.1" + "@vibrant/generator" "^3.2.1-alpha.1" + "@vibrant/image" "^3.2.1-alpha.1" + "@vibrant/quantizer" "^3.2.1-alpha.1" + "@vibrant/types" "^3.2.1-alpha.1" + "@vibrant/worker" "^3.2.1-alpha.1" + +"@vibrant/generator-default@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/generator-default/-/generator-default-3.2.1-alpha.1.tgz#70ae71ea1f72d3e71aa6b244830d01ecae1d755a" + integrity sha512-BWnQhDaz92UhyHnpdAzKXHQecY+jvyMXtzjKYbveFxThm6+HVoLjwONlbck7oyOpFzV2OM7V11XuR85BxaHvjw== + dependencies: + "@vibrant/color" "^3.2.1-alpha.1" + "@vibrant/generator" "^3.2.1-alpha.1" + +"@vibrant/generator@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/generator/-/generator-3.2.1-alpha.1.tgz#887b36f7ed978ff94c93cc8a3ac742ce769b6112" + integrity sha512-luS5YvMhwMqG01YTj1dJ+cmkuIw1VCByOR6zIaCOwQqI/mcOs88JBWcA1r2TywJTOPlVpjfnDvAlyaKBKh4dMA== + dependencies: + "@vibrant/color" "^3.2.1-alpha.1" + "@vibrant/types" "^3.2.1-alpha.1" + +"@vibrant/image-browser@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/image-browser/-/image-browser-3.2.1-alpha.1.tgz#fe595bfe0c0ddc412300b5419e1e42d8b88d4380" + integrity sha512-6xWvQfB20sE6YtCWylgEAHuee3iD8h3aFIDbCS2yj7jIelKcYTrrp5jg2d2BhOOB6pC5JzF+QfpCrm0DmAIlgQ== + dependencies: + "@vibrant/image" "^3.2.1-alpha.1" + +"@vibrant/image-node@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/image-node/-/image-node-3.2.1-alpha.1.tgz#2901e09aee05d64ac9e792a951ee0727299ab80f" + integrity sha512-/Io/Rpo4EkO6AhaXdcxUXkbOFhSFtjm0LSAM4c0AyGA5EbC8PyZqjk8b11bQAEMCaYaweFQfTdGD7oVbXe21CQ== + dependencies: + "@jimp/custom" "^0.16.1" + "@jimp/plugin-resize" "^0.16.1" + "@jimp/types" "^0.16.1" + "@vibrant/image" "^3.2.1-alpha.1" + +"@vibrant/image@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/image/-/image-3.2.1-alpha.1.tgz#8bcde820f5ad873e2e96b00479def80f86e925a5" + integrity sha512-4aF5k79QfyhZOqRovJpbnIjWfe3uuWhY8voqVdd4/qgu4o70/AwVlM+pYmCaJVzI45VWNWWHYA5QlYuKsXnBqQ== + dependencies: + "@vibrant/color" "^3.2.1-alpha.1" + "@vibrant/types" "^3.2.1-alpha.1" + +"@vibrant/quantizer-mmcq@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/quantizer-mmcq/-/quantizer-mmcq-3.2.1-alpha.1.tgz#b36ecb48f4bff9ea35ed23389d8af79c079c079a" + integrity sha512-Wuk9PTZtxr8qsWTcgP6lcrrmrq36syVwxf+BUxdgQYntBcQ053SaN34lVGOJ0WPdK5vABoxbYljhceCgiILtZw== + dependencies: + "@vibrant/color" "^3.2.1-alpha.1" + "@vibrant/image" "^3.2.1-alpha.1" + "@vibrant/quantizer" "^3.2.1-alpha.1" + +"@vibrant/quantizer@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/quantizer/-/quantizer-3.2.1-alpha.1.tgz#8d29e288ea7acbcd0c9ab8c6b86f80adce606210" + integrity sha512-iHnPx/+n4iLtYLm1GClSfyg2fFbMatFG0ipCyp9M6tXNIPAg+pSvUJSGBnVnH7Nl/bR8Gkkj1h0pJ4RsKcdIrQ== + dependencies: + "@vibrant/color" "^3.2.1-alpha.1" + "@vibrant/image" "^3.2.1-alpha.1" + "@vibrant/types" "^3.2.1-alpha.1" + +"@vibrant/types@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/types/-/types-3.2.1-alpha.1.tgz#54ecf8b4d1045af699bfaf592e455079801bc951" + integrity sha512-ts9u7nsrENoYI5s0MmPOeY5kCLFKvQndKVDOPFCbTA0z493uhDp8mpiQhjFYTf3kPbS04z9zbHLE2luFC7x4KQ== + +"@vibrant/worker@^3.2.1-alpha.1": + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/@vibrant/worker/-/worker-3.2.1-alpha.1.tgz#d09e4ec72902d36b9632c2c0aab855747acf1015" + integrity sha512-mtSlBdHkFNr4FOnMtqtHJxy9z5AsUcZzGlpiHzvWOoaoN9lNTDPwxOBd0q4VTYWuGPrIm6Fuq5m7aRbLv7KqiQ== + dependencies: + "@vibrant/types" "^3.2.1-alpha.1" + "@vitejs/plugin-react-swc@^3.3.2": version "3.3.2" resolved "https://registry.yarnpkg.com/@vitejs/plugin-react-swc/-/plugin-react-swc-3.3.2.tgz#34a82c1728066f48a86dfecb2f15df60f89207fb" @@ -478,6 +788,11 @@ ansi-styles@^4.1.0: dependencies: color-convert "^2.0.1" +any-base@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/any-base/-/any-base-1.1.0.tgz#ae101a62bc08a597b4c9ab5b7089d456630549fe" + integrity sha512-uMgjozySS8adZZYePpaWs8cxB9/kdzmpX6SgJZ+wbz1K5eYk5QMYDVJaZKhxyIHUdnnJkfR7SVgStgH7LkGUyg== + argparse@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/argparse/-/argparse-2.0.1.tgz#246f50f3ca78a3240f6c997e8a9bd1eac49e4b38" @@ -493,11 +808,23 @@ balanced-match@^1.0.0: resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.2.tgz#e83e3a7e3f300b34cb9d87f615fa0cbf357690ee" integrity sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw== -base64-js@^1.5.1: +base64-js@^1.3.1, base64-js@^1.5.1: version "1.5.1" resolved "https://registry.yarnpkg.com/base64-js/-/base64-js-1.5.1.tgz#1b1b440160a5bf7ad40b650f095963481903930a" integrity sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA== +bidi-js@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/bidi-js/-/bidi-js-1.0.3.tgz#6f8bcf3c877c4d9220ddf49b9bb6930c88f877d2" + integrity sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw== + dependencies: + require-from-string "^2.0.2" + +bmp-js@^0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/bmp-js/-/bmp-js-0.1.0.tgz#e05a63f796a6c1ff25f4771ec7adadc148c07233" + integrity sha512-vHdS19CnY3hwiNdkaqk93DvjVLfbEcI8mys4UjuWrlX1haDmroo8o4xCzh4wD6DGV6HxRCyauwhHRqMTfERtjw== + brace-expansion@^1.1.7: version "1.1.11" resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" @@ -513,11 +840,37 @@ braces@^3.0.2: dependencies: fill-range "^7.0.1" +buffer-equal@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/buffer-equal/-/buffer-equal-0.0.1.tgz#91bc74b11ea405bc916bc6aa908faafa5b4aac4b" + integrity sha512-RgSV6InVQ9ODPdLWJ5UAqBqJBOg370Nz6ZQtRzpt6nUjc8v0St97uJ4PYC6NztqIScrAXafKM3mZPMygSe1ggA== + +buffer@^5.2.0: + version "5.7.1" + resolved "https://registry.yarnpkg.com/buffer/-/buffer-5.7.1.tgz#ba62e7c13133053582197160851a8f648e99eed0" + integrity sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ== + dependencies: + base64-js "^1.3.1" + ieee754 "^1.1.13" + +call-bind@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/call-bind/-/call-bind-1.0.2.tgz#b1d4e89e688119c3c9a903ad30abb2f6a919be3c" + integrity sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA== + dependencies: + function-bind "^1.1.1" + get-intrinsic "^1.0.2" + callsites@^3.0.0: version "3.1.0" resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camera-controls@^2.4.2: + version "2.7.2" + resolved "https://registry.yarnpkg.com/camera-controls/-/camera-controls-2.7.2.tgz#19a8b5d10e650088e41fe4ee59bafc35df524961" + integrity sha512-6+gaZFK3LYbWaXC94EN0BYLlvpo9xfUqwp59vsU3nV7WXIU05q4wyP5TOgyG1tqTHReuBofb20vKfZNBNjMtzw== + chalk@^4.0.0: version "4.1.2" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.2.tgz#aac4e2b7734a740867aeb16bf02aad556a1e7a01" @@ -543,7 +896,14 @@ concat-map@0.0.1: resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" integrity sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg== -cross-spawn@^7.0.2: +cross-env@^7.0.3: + version "7.0.3" + resolved "https://registry.yarnpkg.com/cross-env/-/cross-env-7.0.3.tgz#865264b29677dc015ba8418918965dd232fc54cf" + integrity sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw== + dependencies: + cross-spawn "^7.0.1" + +cross-spawn@^7.0.1, cross-spawn@^7.0.2: version "7.0.3" resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-7.0.3.tgz#f73a85b9d5d41d045551c177e2882d4ac85728a6" integrity sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w== @@ -574,6 +934,13 @@ deep-is@^0.1.3: resolved "https://registry.yarnpkg.com/deep-is/-/deep-is-0.1.4.tgz#a6f2dce612fadd2ef1f519b73551f17e85199831" integrity sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ== +detect-gpu@^5.0.28: + version "5.0.37" + resolved "https://registry.yarnpkg.com/detect-gpu/-/detect-gpu-5.0.37.tgz#27febe44d478ef4d35cd38007355da795ba075d5" + integrity sha512-EraWs84faI4iskB4qvE39bevMIazEvd1RpoyGLOBesRLbiz6eMeJqqRPHjEFClfRByYZzi9IzU35rBXIO76oDw== + dependencies: + webgl-constants "^1.1.1" + dir-glob@^3.0.1: version "3.0.1" resolved "https://registry.yarnpkg.com/dir-glob/-/dir-glob-3.0.1.tgz#56dbf73d992a4a93ba1584f4534063fd2e41717f" @@ -588,6 +955,16 @@ doctrine@^3.0.0: dependencies: esutils "^2.0.2" +dom-walk@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/dom-walk/-/dom-walk-0.1.2.tgz#0c548bef048f4d1f2a97249002236060daa3fd84" + integrity sha512-6QvTW9mrGeIegrFXdtQi9pk7O/nSK6lSdXW2eqUspN5LWD7UTji2Fqw5V2YLjBpHEoU9Xl/eUWNpDeZvoyOv2w== + +draco3d@^1.4.1: + version "1.5.6" + resolved "https://registry.yarnpkg.com/draco3d/-/draco3d-1.5.6.tgz#0d570a9792e3a3a9fafbfea065b692940441c626" + integrity sha512-+3NaRjWktb5r61ZFoDejlykPEFKT5N/LkbXsaddlw6xNSXBanUYpFc2AXXpbJDilPHazcSreU/DpQIaxfX0NfQ== + esbuild@^0.18.10: version "0.18.20" resolved "https://registry.yarnpkg.com/esbuild/-/esbuild-0.18.20.tgz#4709f5a34801b43b799ab7d6d82f7284a9b7a7a6" @@ -720,6 +1097,11 @@ esutils@^2.0.2: resolved "https://registry.yarnpkg.com/esutils/-/esutils-2.0.3.tgz#74d2eb4de0b8da1293711910d50775b9b710ef64" integrity sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g== +exif-parser@^0.1.12: + version "0.1.12" + resolved "https://registry.yarnpkg.com/exif-parser/-/exif-parser-0.1.12.tgz#58a9d2d72c02c1f6f02a0ef4a9166272b7760922" + integrity sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw== + fast-deep-equal@^3.1.1, fast-deep-equal@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz#3a7d56b559d6cbc3eb512325244e619a65c6c525" @@ -753,7 +1135,7 @@ fastq@^1.6.0: dependencies: reusify "^1.0.4" -fflate@~0.6.10: +fflate@^0.6.9, fflate@~0.6.9: version "0.6.10" resolved "https://registry.yarnpkg.com/fflate/-/fflate-0.6.10.tgz#5f40f9659205936a2d18abf88b2e7781662b6d43" integrity sha512-IQrh3lEPM93wVCEczc9SaAOvkmcoQn/G8Bo1e8ZPlY3X3bnAxWaBdvTdvM1hP62iZp0BXWDy4vTAy4fF0+Dlpg== @@ -765,6 +1147,15 @@ file-entry-cache@^6.0.1: dependencies: flat-cache "^3.0.4" +file-type@^16.5.4: + version "16.5.4" + resolved "https://registry.yarnpkg.com/file-type/-/file-type-16.5.4.tgz#474fb4f704bee427681f98dd390058a172a6c2fd" + integrity sha512-/yFHK0aGjFEgDJjEKP0pWCplsPFPhwyfwevf/pVxiN0tmE4L9LmwWxWukdJSHdoCli4VgQLehjJtwQBnqmsKcw== + dependencies: + readable-web-to-node-stream "^3.0.0" + strtok3 "^6.2.4" + token-types "^4.1.1" + fill-range@^7.0.1: version "7.0.1" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-7.0.1.tgz#1919a6a7c75fe38b2c7c77e5198535da9acdda40" @@ -804,6 +1195,29 @@ fsevents@~2.3.2: resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-2.3.3.tgz#cac6407785d03675a2a5e1a5305c697b347d90d6" integrity sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw== +function-bind@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/function-bind/-/function-bind-1.1.1.tgz#a56899d3ea3c9bab874bb9773b7c5ede92f4895d" + integrity sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A== + +get-intrinsic@^1.0.2: + version "1.2.1" + resolved "https://registry.yarnpkg.com/get-intrinsic/-/get-intrinsic-1.2.1.tgz#d295644fed4505fc9cde952c37ee12b477a83d82" + integrity sha512-2DcsyfABl+gVHEfCOaTrWgyt+tb6MSEGmKq+kI5HwLbIYgjgmMcV8KQ41uaKz1xxUcn9tJtgFbQUEVcEbd0FYw== + dependencies: + function-bind "^1.1.1" + has "^1.0.3" + has-proto "^1.0.1" + has-symbols "^1.0.3" + +gifwrap@^0.9.2: + version "0.9.4" + resolved "https://registry.yarnpkg.com/gifwrap/-/gifwrap-0.9.4.tgz#f4eb6169ba027d61df64aafbdcb1f8ae58ccc0c5" + integrity sha512-MDMwbhASQuVeD4JKd1fKgNgCRL3fGqMM4WaqpNhWO0JiMOAjbQdumbs4BbBZEy9/M00EHEjKN3HieVhCUlwjeQ== + dependencies: + image-q "^4.0.0" + omggif "^1.0.10" + glob-parent@^5.1.2: version "5.1.2" resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-5.1.2.tgz#869832c58034fe68a4093c17dc15e8340d8401c4" @@ -830,6 +1244,14 @@ glob@^7.1.3: once "^1.3.0" path-is-absolute "^1.0.0" +global@~4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/global/-/global-4.4.0.tgz#3e7b105179006a323ed71aafca3e9c57a5cc6406" + integrity sha512-wv/LAoHdRE3BeTGz53FAamhGlPLhlssK45usmGFThIi4XqnBmjKQ16u+RNbP7WvigRZDxUsM0J3gcQ5yicaL0w== + dependencies: + min-document "^2.19.0" + process "^0.11.10" + globals@^13.19.0: version "13.21.0" resolved "https://registry.yarnpkg.com/globals/-/globals-13.21.0.tgz#163aae12f34ef502f5153cfbdd3600f36c63c571" @@ -849,6 +1271,11 @@ globby@^11.1.0: merge2 "^1.4.1" slash "^3.0.0" +glsl-noise@^0.0.0: + version "0.0.0" + resolved "https://registry.yarnpkg.com/glsl-noise/-/glsl-noise-0.0.0.tgz#367745f3a33382c0eeec4cb54b7e99cfc1d7670b" + integrity sha512-b/ZCF6amfAUb7dJM/MxRs7AetQEahYzJ8PtgfrmEdtw6uyGOr+ZSGtgjFm6mfsBkxJ4d2W7kg+Nlqzqvn3Bc0w== + graphemer@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/graphemer/-/graphemer-1.4.0.tgz#fb2f1d55e0e3a1849aeffc90c4fa0dd53a0e66c6" @@ -859,11 +1286,40 @@ has-flag@^4.0.0: resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-4.0.0.tgz#944771fd9c81c81265c4d6941860da06bb59479b" integrity sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ== +has-proto@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/has-proto/-/has-proto-1.0.1.tgz#1885c1305538958aff469fef37937c22795408e0" + integrity sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg== + +has-symbols@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has-symbols/-/has-symbols-1.0.3.tgz#bb7b2c4349251dce87b125f7bdf874aa7c8b39f8" + integrity sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A== + +has@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/has/-/has-1.0.3.tgz#722d7cbfc1f6aa8241f16dd814e011e1f41e8796" + integrity sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw== + dependencies: + function-bind "^1.1.1" + +ieee754@^1.1.13, ieee754@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/ieee754/-/ieee754-1.2.1.tgz#8eb7a10a63fff25d15a57b001586d177d1b0d352" + integrity sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA== + ignore@^5.2.0, ignore@^5.2.4: version "5.2.4" resolved "https://registry.yarnpkg.com/ignore/-/ignore-5.2.4.tgz#a291c0c6178ff1b960befe47fcdec301674a6324" integrity sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ== +image-q@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/image-q/-/image-q-4.0.0.tgz#31e075be7bae3c1f42a85c469b4732c358981776" + integrity sha512-PfJGVgIfKQJuq3s0tTDOKtztksibuUEbJQIYT3by6wctQo+Rdlh7ef4evJ5NCdxY4CfMbvFkocEwbl4BF8RlJw== + dependencies: + "@types/node" "16.9.1" + import-fresh@^3.2.1: version "3.3.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-3.3.0.tgz#37162c25fcb9ebaa2e6e53d5b4d88ce17d9e0c2b" @@ -885,7 +1341,7 @@ inflight@^1.0.4: once "^1.3.0" wrappy "1" -inherits@2: +inherits@2, inherits@^2.0.3: version "2.0.4" resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== @@ -895,6 +1351,11 @@ is-extglob@^2.1.1: resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-2.1.1.tgz#a88c02535791f02ed37c76a1b9ea9773c833f8c2" integrity sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ== +is-function@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-function/-/is-function-1.0.2.tgz#4f097f30abf6efadac9833b17ca5dc03f8144e08" + integrity sha512-lw7DUp0aWXYg+CBCN+JKkcE0Q2RayZnSvnZBlwgxHBQhqt5pZNVy4Ri7H9GmmXkdu7LUthszM+Tor1u/2iBcpQ== + is-glob@^4.0.0, is-glob@^4.0.1, is-glob@^4.0.3: version "4.0.3" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.3.tgz#64f61e42cbbb2eec2071a9dac0b28ba1e65d5084" @@ -924,6 +1385,11 @@ its-fine@^1.0.6: dependencies: "@types/react-reconciler" "^0.28.0" +jpeg-js@^0.4.2: + version "0.4.4" + resolved "https://registry.yarnpkg.com/jpeg-js/-/jpeg-js-0.4.4.tgz#a9f1c6f1f9f0fa80cdb3484ed9635054d28936aa" + integrity sha512-WZzeDOEtTOBK4Mdsar0IqEU5sMr3vSV2RqkAIzUEV2BHnUfKGyswWFPFwK5EeDo93K3FohSHbLAjj0s1Wzd+dg== + "js-tokens@^3.0.0 || ^4.0.0": version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -958,6 +1424,11 @@ keyv@^4.5.3: dependencies: json-buffer "3.0.1" +ktx-parse@^0.4.5: + version "0.4.5" + resolved "https://registry.yarnpkg.com/ktx-parse/-/ktx-parse-0.4.5.tgz#79905e22281a9d3e602b2ff522df1ee7d1813aa6" + integrity sha512-MK3FOody4TXbFf8Yqv7EBbySw7aPvEcPX++Ipt6Sox+/YMFvR5xaTyhfNSk1AEmMy+RYIw81ctN4IMxCB8OAlg== + levn@^0.4.1: version "0.4.1" resolved "https://registry.yarnpkg.com/levn/-/levn-0.4.1.tgz#ae4562c007473b932a6200d403268dd2fffc6ade" @@ -966,6 +1437,25 @@ levn@^0.4.1: prelude-ls "^1.2.1" type-check "~0.4.0" +lil-gui@~0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/lil-gui/-/lil-gui-0.17.0.tgz#b41ae55d0023fcd9185f7395a218db0f58189663" + integrity sha512-MVBHmgY+uEbmJNApAaPbtvNh1RCAeMnKym82SBjtp5rODTYKWtM+MXHCifLe2H2Ti1HuBGBtK/5SyG4ShQ3pUQ== + +load-bmfont@^1.3.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/load-bmfont/-/load-bmfont-1.4.1.tgz#c0f5f4711a1e2ccff725a7b6078087ccfcddd3e9" + integrity sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA== + dependencies: + buffer-equal "0.0.1" + mime "^1.3.4" + parse-bmfont-ascii "^1.0.3" + parse-bmfont-binary "^1.0.5" + parse-bmfont-xml "^1.1.4" + phin "^2.9.1" + xhr "^2.0.1" + xtend "^4.0.0" + locate-path@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-6.0.0.tgz#55321eb309febbc59c4801d931a72452a681d286" @@ -973,12 +1463,27 @@ locate-path@^6.0.0: dependencies: p-locate "^5.0.0" +lodash.clamp@^4.0.3: + version "4.0.3" + resolved "https://registry.yarnpkg.com/lodash.clamp/-/lodash.clamp-4.0.3.tgz#5c24bedeeeef0753560dc2b4cb4671f90a6ddfaa" + integrity sha512-HvzRFWjtcguTW7yd8NJBshuNaCa8aqNFtnswdT7f/cMd/1YKy5Zzoq4W/Oxvnx9l7aeY258uSdDfM793+eLsVg== + lodash.merge@^4.6.2: version "4.6.2" resolved "https://registry.yarnpkg.com/lodash.merge/-/lodash.merge-4.6.2.tgz#558aa53b43b661e1925a0afdfa36a9a1085fe57a" integrity sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ== -loose-envify@^1.1.0: +lodash.omit@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.omit/-/lodash.omit-4.5.0.tgz#6eb19ae5a1ee1dd9df0b969e66ce0b7fa30b5e60" + integrity sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg== + +lodash.pick@^4.4.0: + version "4.4.0" + resolved "https://registry.yarnpkg.com/lodash.pick/-/lodash.pick-4.4.0.tgz#52f05610fff9ded422611441ed1fc123a03001b3" + integrity sha512-hXt6Ul/5yWjfklSGvLQl8vM//l3FtyHZeuelpzK6mm99pNvN9yTDruNZPEJZD1oWrqo+izBmB7oUfWgcCX7s4Q== + +loose-envify@^1.1.0, loose-envify@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/loose-envify/-/loose-envify-1.4.0.tgz#71ee51fa7be4caec1a63839f7e682d8132d30caf" integrity sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q== @@ -992,15 +1497,20 @@ lru-cache@^6.0.0: dependencies: yallist "^4.0.0" +maath@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/maath/-/maath-0.6.0.tgz#7841d0fb95bbb37d19b08b7c5458ef70190950d2" + integrity sha512-dSb2xQuP7vDnaYqfoKzlApeRcR2xtN8/f7WV/TMAkBC8552TwTLtOO0JTcSygkYMjNDPoo6V01jTw/aPi4JrMw== + merge2@^1.3.0, merge2@^1.4.1: version "1.4.1" resolved "https://registry.yarnpkg.com/merge2/-/merge2-1.4.1.tgz#4368892f885e907455a6fd7dc55c0c9d404990ae" integrity sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg== -meshoptimizer@~0.18.1: - version "0.18.1" - resolved "https://registry.yarnpkg.com/meshoptimizer/-/meshoptimizer-0.18.1.tgz#cdb90907f30a7b5b1190facd3b7ee6b7087797d8" - integrity sha512-ZhoIoL7TNV4s5B6+rx5mC//fw8/POGyNxS/DZyCJeiZ12ScLfVwRE/GfsxwiTkMYYD5DmK2/JXnEVXqL4rF+Sw== +meshline@^3.1.6: + version "3.1.6" + resolved "https://registry.yarnpkg.com/meshline/-/meshline-3.1.6.tgz#eee67d9b0fd9841652cc1dc2d3833093ae8e68ca" + integrity sha512-8JZJOdaL5oz3PI/upG8JvP/5FfzYUOhrkJ8np/WKvXzl0/PZ2V9pqTvCIjSKv+w9ccg2xb+yyBhXAwt6ier3ug== micromatch@^4.0.4: version "4.0.5" @@ -1010,6 +1520,18 @@ micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" +mime@^1.3.4: + version "1.6.0" + resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" + integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg== + +min-document@^2.19.0: + version "2.19.0" + resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685" + integrity sha512-9Wy1B3m3f66bPPmU5hdA4DR4PB2OfDU/+GS3yAB7IQozE3tqXaVv2zOjgla7MEGSRv95+ILmOuvhLkOK6wJtCQ== + dependencies: + dom-walk "^0.1.0" + minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: version "3.1.2" resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.1.2.tgz#19cd194bfd3e428f049a70817c038d89ab4be35b" @@ -1017,6 +1539,23 @@ minimatch@^3.0.5, minimatch@^3.1.1, minimatch@^3.1.2: dependencies: brace-expansion "^1.1.7" +minimist@^1.2.6: + version "1.2.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.8.tgz#c1a464e7693302e082a075cee0c057741ac4772c" + integrity sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA== + +mkdirp@^0.5.1: + version "0.5.6" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.6.tgz#7def03d2432dcae4ba1d611445c48396062255f6" + integrity sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw== + dependencies: + minimist "^1.2.6" + +mmd-parser@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/mmd-parser/-/mmd-parser-1.0.4.tgz#87cc05782cb5974ca854f0303fc5147bc9d690e7" + integrity sha512-Qi0VCU46t2IwfGv5KF0+D/t9cizcDug7qnNoy9Ggk7aucp0tssV8IwTMkBlDbm+VqAf3cdQHTCARKSsuS2MYFg== + ms@2.1.2: version "2.1.2" resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" @@ -1032,6 +1571,34 @@ natural-compare@^1.4.0: resolved "https://registry.yarnpkg.com/natural-compare/-/natural-compare-1.4.0.tgz#4abebfeed7541f2c27acfb29bdbbd15c8d5ba4f7" integrity sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw== +node-vibrant@^3.2.1-alpha.1: + version "3.2.1-alpha.1" + resolved "https://registry.yarnpkg.com/node-vibrant/-/node-vibrant-3.2.1-alpha.1.tgz#d80a3dd22741150b804ae0d3eb99ceaf9f79980a" + integrity sha512-EQergCp7fvbvUCE0VMCBnvaAV0lGWSP8SXLmuWQIBzQK5M5pIwcd9fIOXuzFkJx/8hUiiiLvAzzGDS/bIy2ikA== + dependencies: + "@types/node" "^10.12.18" + "@vibrant/core" "^3.2.1-alpha.1" + "@vibrant/generator-default" "^3.2.1-alpha.1" + "@vibrant/image-browser" "^3.2.1-alpha.1" + "@vibrant/image-node" "^3.2.1-alpha.1" + "@vibrant/quantizer-mmcq" "^3.2.1-alpha.1" + url "^0.11.0" + +object-assign@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg== + +object-inspect@^1.9.0: + version "1.12.3" + resolved "https://registry.yarnpkg.com/object-inspect/-/object-inspect-1.12.3.tgz#ba62dffd67ee256c8c086dfae69e016cd1f198b9" + integrity sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g== + +omggif@^1.0.10, omggif@^1.0.9: + version "1.0.10" + resolved "https://registry.yarnpkg.com/omggif/-/omggif-1.0.10.tgz#ddaaf90d4a42f532e9e7cb3a95ecdd47f17c7b19" + integrity sha512-LMJTtvgc/nugXj0Vcrrs68Mn2D1r0zf630VNtqtpI1FEO7e+O9FP4gqs9AcnBaSEeoHIPm28u6qgPR0oyEpGSw== + once@^1.3.0: version "1.4.0" resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" @@ -1039,6 +1606,14 @@ once@^1.3.0: dependencies: wrappy "1" +opentype.js@^1.3.3: + version "1.3.4" + resolved "https://registry.yarnpkg.com/opentype.js/-/opentype.js-1.3.4.tgz#1c0e72e46288473cc4a4c6a2dc60fd7fe6020d77" + integrity sha512-d2JE9RP/6uagpQAVtJoF0pJJA/fgai89Cc50Yp0EJHk+eLp6QQ7gBoblsnubRULNY132I0J1QKMJ+JTbMqz4sw== + dependencies: + string.prototype.codepointat "^0.2.1" + tiny-inflate "^1.0.3" + optionator@^0.9.3: version "0.9.3" resolved "https://registry.yarnpkg.com/optionator/-/optionator-0.9.3.tgz#007397d44ed1872fdc6ed31360190f81814e2c64" @@ -1065,6 +1640,11 @@ p-locate@^5.0.0: dependencies: p-limit "^3.0.2" +pako@^1.0.5: + version "1.0.11" + resolved "https://registry.yarnpkg.com/pako/-/pako-1.0.11.tgz#6c9599d340d54dfd3946380252a35705a6b992bf" + integrity sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw== + parent-module@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/parent-module/-/parent-module-1.0.1.tgz#691d2709e78c79fae3a156622452d00762caaaa2" @@ -1072,6 +1652,29 @@ parent-module@^1.0.0: dependencies: callsites "^3.0.0" +parse-bmfont-ascii@^1.0.3: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-ascii/-/parse-bmfont-ascii-1.0.6.tgz#11ac3c3ff58f7c2020ab22769079108d4dfa0285" + integrity sha512-U4RrVsUFCleIOBsIGYOMKjn9PavsGOXxbvYGtMOEfnId0SVNsgehXh1DxUdVPLoxd5mvcEtvmKs2Mmf0Mpa1ZA== + +parse-bmfont-binary@^1.0.5: + version "1.0.6" + resolved "https://registry.yarnpkg.com/parse-bmfont-binary/-/parse-bmfont-binary-1.0.6.tgz#d038b476d3e9dd9db1e11a0b0e53a22792b69006" + integrity sha512-GxmsRea0wdGdYthjuUeWTMWPqm2+FAd4GI8vCvhgJsFnoGhTrLhXDDupwTo7rXVAgaLIGoVHDZS9p/5XbSqeWA== + +parse-bmfont-xml@^1.1.4: + version "1.1.4" + resolved "https://registry.yarnpkg.com/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz#015319797e3e12f9e739c4d513872cd2fa35f389" + integrity sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ== + dependencies: + xml-parse-from-string "^1.0.0" + xml2js "^0.4.5" + +parse-headers@^2.0.0: + version "2.0.5" + resolved "https://registry.yarnpkg.com/parse-headers/-/parse-headers-2.0.5.tgz#069793f9356a54008571eb7f9761153e6c770da9" + integrity sha512-ft3iAoLOB/MlwbNXgzy43SWGP6sQki2jQvAyBg/zDFAgr9bfNWZIUj42Kw2eJIl8kEi4PbgE6U1Zau/HwI75HA== + path-exists@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-4.0.0.tgz#513bdbe2d3b95d7762e8c1137efa195c6c61b5b3" @@ -1092,6 +1695,16 @@ path-type@^4.0.0: resolved "https://registry.yarnpkg.com/path-type/-/path-type-4.0.0.tgz#84ed01c0a7ba380afe09d90a8c180dcd9d03043b" integrity sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw== +peek-readable@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/peek-readable/-/peek-readable-4.1.0.tgz#4ece1111bf5c2ad8867c314c81356847e8a62e72" + integrity sha512-ZI3LnwUv5nOGbQzD9c2iDG6toheuXSZP5esSHBjopsXH4dg19soufvpUGA3uohi5anFtGb2lhAVdHzH6R/Evvg== + +phin@^2.9.1: + version "2.9.3" + resolved "https://registry.yarnpkg.com/phin/-/phin-2.9.3.tgz#f9b6ac10a035636fb65dfc576aaaa17b8743125c" + integrity sha512-CzFr90qM24ju5f88quFC/6qohjC144rehe5n6DH900lgXmUe86+xCKc10ev56gRKC4/BkHUoG4uSiQgBiIXwDA== + picocolors@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/picocolors/-/picocolors-1.0.0.tgz#cb5bdc74ff3f51892236eaf79d68bc44564ab81c" @@ -1102,6 +1715,18 @@ picomatch@^2.3.1: resolved "https://registry.yarnpkg.com/picomatch/-/picomatch-2.3.1.tgz#3ba3833733646d9d3e4995946c1365a67fb07a42" integrity sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA== +pixelmatch@^4.0.2: + version "4.0.2" + resolved "https://registry.yarnpkg.com/pixelmatch/-/pixelmatch-4.0.2.tgz#8f47dcec5011b477b67db03c243bc1f3085e8854" + integrity sha512-J8B6xqiO37sU/gkcMglv6h5Jbd9xNER7aHzpfRdNmV4IbQBzBpe4l9XmbG+xPF/znacgu2jfEw+wHffaq/YkXA== + dependencies: + pngjs "^3.0.0" + +pngjs@^3.0.0, pngjs@^3.3.3: + version "3.4.0" + resolved "https://registry.yarnpkg.com/pngjs/-/pngjs-3.4.0.tgz#99ca7d725965fb655814eaf65f38f12bbdbf555f" + integrity sha512-NCrCHhWmnQklfH4MtJMRjZ2a8c80qXeMlQMv2uVp9ISJMTt562SbGd6n2oq0PaPgKm7Z6pL9E2UlLIhC+SHL3w== + postcss@^8.4.27: version "8.4.29" resolved "https://registry.yarnpkg.com/postcss/-/postcss-8.4.29.tgz#33bc121cf3b3688d4ddef50be869b2a54185a1dd" @@ -1111,6 +1736,11 @@ postcss@^8.4.27: picocolors "^1.0.0" source-map-js "^1.0.2" +potpack@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/potpack/-/potpack-1.0.2.tgz#23b99e64eb74f5741ffe7656b5b5c4ddce8dfc14" + integrity sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ== + prelude-ls@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/prelude-ls/-/prelude-ls-1.2.1.tgz#debc6489d7a6e6b0e7611888cec880337d316396" @@ -1121,16 +1751,49 @@ prettier@^3.0.3: resolved "https://registry.yarnpkg.com/prettier/-/prettier-3.0.3.tgz#432a51f7ba422d1469096c0fdc28e235db8f9643" integrity sha512-L/4pUDMxcNa8R/EthV08Zt42WBO4h1rarVtK0K+QJG0X187OLo7l699jWw0GKuwzkPQ//jMFA/8Xm6Fh3J/DAg== +process@^0.11.10: + version "0.11.10" + resolved "https://registry.yarnpkg.com/process/-/process-0.11.10.tgz#7332300e840161bda3e69a1d1d91a7d4bc16f182" + integrity sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A== + +prop-types@^15.6.0: + version "15.8.1" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.8.1.tgz#67d87bf1a694f48435cf332c24af10214a3140b5" + integrity sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.13.1" + +punycode@^1.4.1: + version "1.4.1" + resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e" + integrity sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ== + punycode@^2.1.0: version "2.3.0" resolved "https://registry.yarnpkg.com/punycode/-/punycode-2.3.0.tgz#f67fa67c94da8f4d0cfff981aee4118064199b8f" integrity sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA== +qs@^6.11.2: + version "6.11.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.11.2.tgz#64bea51f12c1f5da1bc01496f48ffcff7c69d7d9" + integrity sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA== + dependencies: + side-channel "^1.0.4" + queue-microtask@^1.2.2: version "1.2.3" resolved "https://registry.yarnpkg.com/queue-microtask/-/queue-microtask-1.2.3.tgz#4929228bbc724dfac43e0efb058caf7b6cfb6243" integrity sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A== +react-composer@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/react-composer/-/react-composer-5.0.3.tgz#7beb9513da5e8687f4f434ea1333ef36a4f3091b" + integrity sha512-1uWd07EME6XZvMfapwZmc7NgCZqDemcvicRi3wMJzXsQLvZ3L7fTHVyPy1bZdnWXM4iPjYuNE+uJ41MLKeTtnA== + dependencies: + prop-types "^15.6.0" + react-dom@^18.2.0: version "18.2.0" resolved "https://registry.yarnpkg.com/react-dom/-/react-dom-18.2.0.tgz#22aaf38708db2674ed9ada224ca4aa708d821e3d" @@ -1139,6 +1802,16 @@ react-dom@^18.2.0: loose-envify "^1.1.0" scheduler "^0.23.0" +react-is@^16.13.1: + version "16.13.1" + resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" + integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== + +react-merge-refs@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/react-merge-refs/-/react-merge-refs-1.1.0.tgz#73d88b892c6c68cbb7a66e0800faa374f4c38b06" + integrity sha512-alTKsjEL0dKH/ru1Iyn7vliS2QRcBp9zZPGoWxUOvRGWPUYgjo+V01is7p04It6KhgrzhJGnIj9GgX8W4bZoCQ== + react-reconciler@^0.27.0: version "0.27.0" resolved "https://registry.yarnpkg.com/react-reconciler/-/react-reconciler-0.27.0.tgz#360124fdf2d76447c7491ee5f0e04503ed9acf5b" @@ -1161,11 +1834,37 @@ react@^18.2.0: dependencies: loose-envify "^1.1.0" +readable-stream@^3.6.0: + version "3.6.2" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-3.6.2.tgz#56a9b36ea965c00c5a93ef31eb111a0f11056967" + integrity sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA== + dependencies: + inherits "^2.0.3" + string_decoder "^1.1.1" + util-deprecate "^1.0.1" + +readable-web-to-node-stream@^3.0.0: + version "3.0.2" + resolved "https://registry.yarnpkg.com/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz#5d52bb5df7b54861fd48d015e93a2cb87b3ee0bb" + integrity sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw== + dependencies: + readable-stream "^3.6.0" + +regenerator-runtime@^0.13.3: + version "0.13.11" + resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz#f6dca3e7ceec20590d07ada785636a90cdca17f9" + integrity sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg== + regenerator-runtime@^0.14.0: version "0.14.0" resolved "https://registry.yarnpkg.com/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz#5e19d68eb12d486f797e15a3c6a918f7cec5eb45" integrity sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA== +require-from-string@^2.0.2: + version "2.0.2" + resolved "https://registry.yarnpkg.com/require-from-string/-/require-from-string-2.0.2.tgz#89a7fdd938261267318eafe14f9c32e598c36909" + integrity sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw== + resolve-from@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" @@ -1197,6 +1896,16 @@ run-parallel@^1.1.9: dependencies: queue-microtask "^1.2.2" +safe-buffer@~5.2.0: + version "5.2.1" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.1.tgz#1eaf9fa9bdb1fdd4ec75f58f9cdb4e6b7827eec6" + integrity sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ== + +sax@>=0.6.0: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + scheduler@^0.21.0: version "0.21.0" resolved "https://registry.yarnpkg.com/scheduler/-/scheduler-0.21.0.tgz#6fd2532ff5a6d877b6edb12f00d8ab7e8f308820" @@ -1230,6 +1939,15 @@ shebang-regex@^3.0.0: resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-3.0.0.tgz#ae16f1644d873ecad843b0307b143362d4c42172" integrity sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A== +side-channel@^1.0.4: + version "1.0.4" + resolved "https://registry.yarnpkg.com/side-channel/-/side-channel-1.0.4.tgz#efce5c8fdc104ee751b25c58d4290011fa5ea2cf" + integrity sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw== + dependencies: + call-bind "^1.0.0" + get-intrinsic "^1.0.2" + object-inspect "^1.9.0" + slash@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/slash/-/slash-3.0.0.tgz#6539be870c165adbd5240220dbe361f1bc4d4634" @@ -1240,6 +1958,28 @@ source-map-js@^1.0.2: resolved "https://registry.yarnpkg.com/source-map-js/-/source-map-js-1.0.2.tgz#adbc361d9c62df380125e7f161f71c826f1e490c" integrity sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw== +stats-gl@^1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/stats-gl/-/stats-gl-1.0.5.tgz#7f2b6688cc37b3d4bc79749ab122c063528be9c3" + integrity sha512-XimMxvwnf1Qf5KwebhcoA34kcX+fWEkIl0QjNkCbu4IpoyDMMsOajExn7FIq5w569k45+LhmsuRlGSrsvmGdNw== + +stats.js@^0.17.0: + version "0.17.0" + resolved "https://registry.yarnpkg.com/stats.js/-/stats.js-0.17.0.tgz#b1c3dc46d94498b578b7fd3985b81ace7131cc7d" + integrity sha512-hNKz8phvYLPEcRkeG1rsGmV5ChMjKDAWU7/OJJdDErPBNChQXxCo3WZurGpnWc6gZhAzEPFad1aVgyOANH1sMw== + +string.prototype.codepointat@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/string.prototype.codepointat/-/string.prototype.codepointat-0.2.1.tgz#004ad44c8afc727527b108cd462b4d971cd469bc" + integrity sha512-2cBVCj6I4IOvEnjgO/hWqXjqBGsY+zwPmHl12Srk9IXSZ56Jwwmy+66XO5Iut/oQVR7t5ihYdLB0GMa4alEUcg== + +string_decoder@^1.1.1: + version "1.3.0" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.3.0.tgz#42f114594a46cf1a8e30b0a84f56c78c3edac21e" + integrity sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA== + dependencies: + safe-buffer "~5.2.0" + strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" @@ -1252,6 +1992,14 @@ strip-json-comments@^3.1.1: resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-3.1.1.tgz#31f1281b3832630434831c310c01cccda8cbe006" integrity sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig== +strtok3@^6.2.4: + version "6.3.0" + resolved "https://registry.yarnpkg.com/strtok3/-/strtok3-6.3.0.tgz#358b80ffe6d5d5620e19a073aa78ce947a90f9a0" + integrity sha512-fZtbhtvI9I48xDSywd/somNqgUHl2L2cstmXCCif0itOf96jeW18MBSyrLuNicYQVkvpOxkZtkzujiTJ9LW5Jw== + dependencies: + "@tokenizer/token" "^0.3.0" + peek-readable "^4.1.0" + supports-color@^7.1.0: version "7.2.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-7.2.0.tgz#1b7dcdcb32b8138801b3e478ba6a51caa89648da" @@ -1269,10 +2017,46 @@ text-table@^0.2.0: resolved "https://registry.yarnpkg.com/text-table/-/text-table-0.2.0.tgz#7f5ee823ae805207c00af2df4a84ec3fcfa570b4" integrity sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw== -three@^0.156.1: - version "0.156.1" - resolved "https://registry.yarnpkg.com/three/-/three-0.156.1.tgz#bab4fec121a5b3975eb4f4d227d9c912171eb399" - integrity sha512-kP7H0FK9d/k6t/XvQ9FO6i+QrePoDcNhwl0I02+wmUJRNSLCUIDMcfObnzQvxb37/0Uc9TDT0T1HgsRRrO6SYQ== +three-mesh-bvh@^0.6.0: + version "0.6.7" + resolved "https://registry.yarnpkg.com/three-mesh-bvh/-/three-mesh-bvh-0.6.7.tgz#6491876f5bf0c0d67be81a4402f2abdbb2266d76" + integrity sha512-RYdjMsH+vZvjLwA+ehI4+ZqTaTehAz4iho2yfL5PdGsIHyxpB78g0iy4Emj8079m/9KBX02TzddkvPSKSruQjg== + +three-stdlib@^2.25.1: + version "2.25.1" + resolved "https://registry.yarnpkg.com/three-stdlib/-/three-stdlib-2.25.1.tgz#46c6b8bd18659d9d3695237cd92b3d5baee309b4" + integrity sha512-cFlxaTJjlSM10NGoUVEoQkMRpSOftuAh3OCpSKiLTsUfA7/HuhpoBJy3StiOor/LZm5M+onegqsbr5UBCCYYjQ== + dependencies: + "@types/draco3d" "^1.4.0" + "@types/offscreencanvas" "^2019.6.4" + "@types/webxr" "^0.5.2" + draco3d "^1.4.1" + fflate "^0.6.9" + ktx-parse "^0.4.5" + mmd-parser "^1.0.4" + opentype.js "^1.3.3" + potpack "^1.0.1" + zstddec "^0.0.2" + +three@^0.152.2: + version "0.152.2" + resolved "https://registry.yarnpkg.com/three/-/three-0.152.2.tgz#2ee0f2c504d31a4bc29b45495c12bded9fda7bfc" + integrity sha512-Ff9zIpSfkkqcBcpdiFo2f35vA9ZucO+N8TNacJOqaEE6DrB0eufItVMib8bK8Pcju/ZNT6a7blE1GhTpkdsILw== + +timm@^1.6.1: + version "1.7.1" + resolved "https://registry.yarnpkg.com/timm/-/timm-1.7.1.tgz#96bab60c7d45b5a10a8a4d0f0117c6b7e5aff76f" + integrity sha512-IjZc9KIotudix8bMaBW6QvMuq64BrJWFs1+4V0lXwWGQZwH+LnX87doAYhem4caOEusRP9/g6jVDQmZ8XOk1nw== + +tiny-inflate@^1.0.3: + version "1.0.3" + resolved "https://registry.yarnpkg.com/tiny-inflate/-/tiny-inflate-1.0.3.tgz#122715494913a1805166aaf7c93467933eea26c4" + integrity sha512-pkY1fj1cKHb2seWDy0B16HeWyczlJA9/WW3u3c4z/NiWDsO3DOU5D7nhTLE9CF0yXv/QZFY7sEJmj24dK+Rrqw== + +tinycolor2@^1.4.1: + version "1.6.0" + resolved "https://registry.yarnpkg.com/tinycolor2/-/tinycolor2-1.6.0.tgz#f98007460169b0263b97072c5ae92484ce02d09e" + integrity sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw== to-regex-range@^5.0.1: version "5.0.1" @@ -1281,6 +2065,34 @@ to-regex-range@^5.0.1: dependencies: is-number "^7.0.0" +token-types@^4.1.1: + version "4.2.1" + resolved "https://registry.yarnpkg.com/token-types/-/token-types-4.2.1.tgz#0f897f03665846982806e138977dbe72d44df753" + integrity sha512-6udB24Q737UD/SDsKAHI9FCRP7Bqc9D/MQUV02ORQg5iskjtLJlZJNdN4kKtcdtwCeWIwIHDGaUsTsCCAa8sFQ== + dependencies: + "@tokenizer/token" "^0.3.0" + ieee754 "^1.2.1" + +troika-three-text@^0.47.2: + version "0.47.2" + resolved "https://registry.yarnpkg.com/troika-three-text/-/troika-three-text-0.47.2.tgz#fdf89059c010563bb829262b20c41f69ca79b712" + integrity sha512-qylT0F+U7xGs+/PEf3ujBdJMYWbn0Qci0kLqI5BJG2kW1wdg4T1XSxneypnF05DxFqJhEzuaOR9S2SjiyknMng== + dependencies: + bidi-js "^1.0.2" + troika-three-utils "^0.47.2" + troika-worker-utils "^0.47.2" + webgl-sdf-generator "1.1.1" + +troika-three-utils@^0.47.2: + version "0.47.2" + resolved "https://registry.yarnpkg.com/troika-three-utils/-/troika-three-utils-0.47.2.tgz#af49ca694245dce631963d5fefe4e8e1b8af9044" + integrity sha512-/28plhCxfKtH7MSxEGx8e3b/OXU5A0xlwl+Sbdp0H8FXUHKZDoksduEKmjQayXYtxAyuUiCRunYIv/8Vi7aiyg== + +troika-worker-utils@^0.47.2: + version "0.47.2" + resolved "https://registry.yarnpkg.com/troika-worker-utils/-/troika-worker-utils-0.47.2.tgz#e7c5de5f37d56c072b13fa8112bb844e048ff46c" + integrity sha512-mzss4MeyzUkYBppn4x5cdAqrhBHFEuVmMMgLMTyFV23x6GvQMyo+/R5E5Lsbrt7WSt5RfvewjcwD1DChRTA9lA== + ts-api-utils@^1.0.1: version "1.0.3" resolved "https://registry.yarnpkg.com/ts-api-utils/-/ts-api-utils-1.0.3.tgz#f12c1c781d04427313dbac808f453f050e54a331" @@ -1310,6 +2122,31 @@ uri-js@^4.2.2: dependencies: punycode "^2.1.0" +url@^0.11.0: + version "0.11.2" + resolved "https://registry.yarnpkg.com/url/-/url-0.11.2.tgz#02f250a6e0d992b781828cd456d44f49bf2e19dd" + integrity sha512-7yIgNnrST44S7PJ5+jXbdIupfU1nWUdQJBFBeJRclPXiWgCvrSq5Frw8lr/i//n5sqDfzoKmBymMS81l4U/7cg== + dependencies: + punycode "^1.4.1" + qs "^6.11.2" + +utif@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/utif/-/utif-2.0.1.tgz#9e1582d9bbd20011a6588548ed3266298e711759" + integrity sha512-Z/S1fNKCicQTf375lIP9G8Sa1H/phcysstNrrSdZKj1f9g58J4NMgb5IgiEZN9/nLMPDwF0W7hdOe9Qq2IYoLg== + dependencies: + pako "^1.0.5" + +util-deprecate@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw== + +utility-types@^3.10.0: + version "3.10.0" + resolved "https://registry.yarnpkg.com/utility-types/-/utility-types-3.10.0.tgz#ea4148f9a741015f05ed74fd615e1d20e6bed82b" + integrity sha512-O11mqxmi7wMKCo6HKFt5AhO4BwY3VV68YU07tgxfz8zJTIxr4BpsezN49Ffwy9j3ZpwwJp4fkRwjRzq3uWE6Rg== + vite@^4.4.5: version "4.4.9" resolved "https://registry.yarnpkg.com/vite/-/vite-4.4.9.tgz#1402423f1a2f8d66fd8d15e351127c7236d29d3d" @@ -1321,6 +2158,16 @@ vite@^4.4.5: optionalDependencies: fsevents "~2.3.2" +webgl-constants@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/webgl-constants/-/webgl-constants-1.1.1.tgz#f9633ee87fea56647a60b9ce735cbdfb891c6855" + integrity sha512-LkBXKjU5r9vAW7Gcu3T5u+5cvSvh5WwINdr0C+9jpzVB41cjQAP5ePArDtk/WHYdVj0GefCgM73BA7FlIiNtdg== + +webgl-sdf-generator@1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/webgl-sdf-generator/-/webgl-sdf-generator-1.1.1.tgz#3e1b422b3d87cd3cc77f2602c9db63bc0f6accbd" + integrity sha512-9Z0JcMTFxeE+b2x1LJTdnaT8rT8aEp7MVxkNwoycNmJWwPdzoXzMh0BjJSh/AEFP+KPYZUli814h8bJZFIZ2jA== + which@^2.0.1: version "2.0.2" resolved "https://registry.yarnpkg.com/which/-/which-2.0.2.tgz#7c6a8dd0a636a0327e10b59c9286eee93f3f51b1" @@ -1333,6 +2180,39 @@ wrappy@1: resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" integrity sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ== +xhr@^2.0.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/xhr/-/xhr-2.6.0.tgz#b69d4395e792b4173d6b7df077f0fc5e4e2b249d" + integrity sha512-/eCGLb5rxjx5e3mF1A7s+pLlR6CGyqWN91fv1JgER5mVWg1MZmlhBvy9kjcsOdRk8RrIujotWyJamfyrp+WIcA== + dependencies: + global "~4.4.0" + is-function "^1.0.1" + parse-headers "^2.0.0" + xtend "^4.0.0" + +xml-parse-from-string@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/xml-parse-from-string/-/xml-parse-from-string-1.0.1.tgz#a9029e929d3dbcded169f3c6e28238d95a5d5a28" + integrity sha512-ErcKwJTF54uRzzNMXq2X5sMIy88zJvfN2DmdoQvy7PAFJ+tPRU6ydWuOKNMyfmOjdyBQTFREi60s0Y0SyI0G0g== + +xml2js@^0.4.5: + version "0.4.23" + resolved "https://registry.yarnpkg.com/xml2js/-/xml2js-0.4.23.tgz#a0c69516752421eb2ac758ee4d4ccf58843eac66" + integrity sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug== + dependencies: + sax ">=0.6.0" + xmlbuilder "~11.0.0" + +xmlbuilder@~11.0.0: + version "11.0.1" + resolved "https://registry.yarnpkg.com/xmlbuilder/-/xmlbuilder-11.0.1.tgz#be9bae1c8a046e76b31127726347d0ad7002beb3" + integrity sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA== + +xtend@^4.0.0: + version "4.0.2" + resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" + integrity sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ== + yallist@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72" @@ -1343,7 +2223,12 @@ yocto-queue@^0.1.0: resolved "https://registry.yarnpkg.com/yocto-queue/-/yocto-queue-0.1.0.tgz#0294eb3dee05028d31ee1a5fa2c556a6aaf10a1b" integrity sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q== -zustand@^3.7.1: +zstddec@^0.0.2: + version "0.0.2" + resolved "https://registry.yarnpkg.com/zstddec/-/zstddec-0.0.2.tgz#57e2f28dd1ff56b750e07d158a43f0611ad9eeb4" + integrity sha512-DCo0oxvcvOTGP/f5FA6tz2Z6wF+FIcEApSTu0zV5sQgn9hoT5lZ9YRAKUraxt9oP7l4e8TnNdi8IZTCX6WCkwA== + +zustand@^3.5.13, zustand@^3.7.1: version "3.7.2" resolved "https://registry.yarnpkg.com/zustand/-/zustand-3.7.2.tgz#7b44c4f4a5bfd7a8296a3957b13e1c346f42514d" integrity sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==