From 95176b8a004b1b9fcad4fd4729c8184161197a40 Mon Sep 17 00:00:00 2001 From: Paul Chavard Date: Fri, 20 Sep 2024 18:22:49 +0200 Subject: [PATCH] chore(maplibre): update --- app/assets/stylesheets/carte.scss | 87 +- .../MapEditor/components/CadastreLayer.tsx | 52 +- .../MapEditor/components/DrawLayer.tsx | 24 +- app/javascript/components/MapEditor/index.tsx | 27 +- app/javascript/components/MapReader/index.tsx | 1 - .../components/shared/maplibre/MapLibre.tsx | 70 +- .../shared/maplibre/StyleControl.tsx | 167 +- .../components/shared/maplibre/hooks.ts | 4 +- .../components/shared/maplibre/styles/base.ts | 32 +- .../shared/maplibre/styles/index.ts | 23 +- .../maplibre/styles/layers/cadastre.json | 106 + .../shared/maplibre/styles/layers/cadastre.ts | 110 - .../shared/maplibre/styles/layers/ign.json | 8 + .../shared/maplibre/styles/layers/ign.ts | 12 - .../shared/maplibre/styles/layers/ortho.json | 2647 +++++++++++++++ .../shared/maplibre/styles/layers/ortho.ts | 2644 --------------- .../shared/maplibre/styles/layers/vector.json | 2866 +++++++++++++++++ .../shared/maplibre/styles/layers/vector.ts | 2844 ---------------- app/javascript/entrypoints/main.css | 1 + bun.lockb | Bin 546444 -> 553868 bytes package.json | 37 +- 21 files changed, 5936 insertions(+), 5826 deletions(-) create mode 100644 app/javascript/components/shared/maplibre/styles/layers/cadastre.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/cadastre.ts create mode 100644 app/javascript/components/shared/maplibre/styles/layers/ign.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/ign.ts create mode 100644 app/javascript/components/shared/maplibre/styles/layers/ortho.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/ortho.ts create mode 100644 app/javascript/components/shared/maplibre/styles/layers/vector.json delete mode 100644 app/javascript/components/shared/maplibre/styles/layers/vector.ts diff --git a/app/assets/stylesheets/carte.scss b/app/assets/stylesheets/carte.scss index a9def4820..372772419 100644 --- a/app/assets/stylesheets/carte.scss +++ b/app/assets/stylesheets/carte.scss @@ -1,6 +1,4 @@ @import "colors"; -@import "constants"; - .areas { margin-bottom: 10px; @@ -10,56 +8,49 @@ } } -.map-style-control { - position: absolute; - bottom: 4px; - left: 10px; +.ds-ctrl button { + color: $dark-grey; - img { - width: 100%; - } - - button { - padding: 0; - border: none; - cursor: pointer; - - > div { - position: absolute; - bottom: 5px; - left: 5px; - } - } - - .map-style-panel { - z-index: 1; - padding: $default-spacer; - margin-bottom: $default-spacer; - - ul { - list-style: none; - padding: $default-spacer; - padding-bottom: 0; - margin-bottom: -$default-spacer; - - label { - font-size: 12px; - font-weight: normal; - } - } + &.on, + &:hover { + background-color: rgba(0, 0, 0, 0.05); } } -.cadastres-selection-control { - z-index: 1; - position: absolute; - top: 135px; - left: 10px; +.react-aria-popover { + &[data-placement='top'] { + --origin: translateY(8px); + } - button { - &.on, - &:hover { - background-color: rgba(0, 0, 0, 0.05); - } + &[data-placement='bottom'] { + --origin: translateY(-8px); + } + + &[data-placement='right'] { + --origin: translateX(-8px); + } + + &[data-placement='left'] { + --origin: translateX(8px); + } + + &[data-entering] { + animation: popover-slide 200ms; + } + + &[data-exiting] { + animation: popover-slide 200ms reverse ease-in; + } +} + +@keyframes popover-slide { + from { + transform: var(--origin); + opacity: 0; + } + + to { + transform: translateY(0); + opacity: 1; } } diff --git a/app/javascript/components/MapEditor/components/CadastreLayer.tsx b/app/javascript/components/MapEditor/components/CadastreLayer.tsx index c8203d032..9b1ac8b5f 100644 --- a/app/javascript/components/MapEditor/components/CadastreLayer.tsx +++ b/app/javascript/components/MapEditor/components/CadastreLayer.tsx @@ -1,7 +1,9 @@ -import { useCallback, useRef } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; +import { createPortal } from 'react-dom'; import type { Feature, FeatureCollection } from 'geojson'; +import { CursorClickIcon } from '@heroicons/react/outline'; -import { useMapLibre } from '../../shared/maplibre/MapLibre'; +import { useMapLibre, ReactControl } from '../../shared/maplibre/MapLibre'; import { useEvent, useMapEvent, @@ -18,15 +20,31 @@ export function CadastreLayer({ featureCollection, createFeatures, deleteFeatures, + toggle, enabled }: { featureCollection: FeatureCollection; createFeatures: CreateFeatures; deleteFeatures: DeleteFeatures; + toggle: () => void; enabled: boolean; }) { const map = useMapLibre(); const selectedCadastresRef = useRef(new Set()); + const [controlElement, setControlElement] = useState( + null + ); + + useEffect(() => { + const control = new ReactControl(); + map.addControl(control, 'top-left'); + setControlElement(control.container); + + return () => { + map.removeControl(control); + setControlElement(null); + }; + }, [map, enabled]); const highlightFeature = useCallback( (cid: string, highlight: boolean) => { @@ -95,7 +113,35 @@ export function CadastreLayer({ useEvent('map:internal:cadastre:highlight', onHighlight); - return null; + return ( + <> + {controlElement != null + ? createPortal( + , + controlElement + ) + : null} + + ); +} + +function CadastreSwitch({ + enabled, + toggle +}: { + enabled: boolean; + toggle: () => void; +}) { + return ( + + ); } function useCadastres( diff --git a/app/javascript/components/MapEditor/components/DrawLayer.tsx b/app/javascript/components/MapEditor/components/DrawLayer.tsx index 63d29767c..cffb87486 100644 --- a/app/javascript/components/MapEditor/components/DrawLayer.tsx +++ b/app/javascript/components/MapEditor/components/DrawLayer.tsx @@ -1,5 +1,5 @@ import { useCallback, useRef, useEffect } from 'react'; -import type { LngLatBoundsLike, LngLatLike } from 'maplibre-gl'; +import type { LngLatBoundsLike, LngLatLike, IControl } from 'maplibre-gl'; import DrawControl from '@mapbox/mapbox-gl-draw'; import type { FeatureCollection, Feature, Point } from 'geojson'; @@ -52,18 +52,14 @@ export function DrawLayer({ }); // We use mapbox-draw plugin with maplibre. They are compatible but types are not. // eslint-disable-next-line @typescript-eslint/no-explicit-any - map.addControl(draw as any, 'top-left'); + const control = draw as any as IControl; + map.addControl(control, 'top-left'); draw.set( filterFeatureCollection(featureCollection, SOURCE_SELECTION_UTILISATEUR) ); drawRef.current = draw; - for (const [selector, translation] of translations) { - const element = document.querySelector(selector); - if (element) { - element.setAttribute('title', translation); - } - } + patchDrawControl(); } return () => { @@ -228,3 +224,15 @@ const translations = [ ['.mapbox-gl-draw_point', 'Ajouter un point'], ['.mapbox-gl-draw_trash', 'Supprimer'] ]; + +function patchDrawControl() { + document.querySelectorAll('.mapboxgl-ctrl').forEach((control) => { + control.classList.add('maplibregl-ctrl', 'maplibregl-ctrl-group'); + + for (const [selector, translation] of translations) { + for (const button of control.querySelectorAll(selector)) { + button.setAttribute('title', translation); + } + } + }); +} diff --git a/app/javascript/components/MapEditor/index.tsx b/app/javascript/components/MapEditor/index.tsx index 5bea4796c..f900e3fac 100644 --- a/app/javascript/components/MapEditor/index.tsx +++ b/app/javascript/components/MapEditor/index.tsx @@ -1,6 +1,4 @@ import { useState } from 'react'; -import { CursorClickIcon } from '@heroicons/react/outline'; -import 'maplibre-gl/dist/maplibre-gl.css'; import '@mapbox/mapbox-gl-draw/dist/mapbox-gl-draw.css'; import type { FeatureCollection } from 'geojson'; @@ -51,25 +49,12 @@ export default function MapEditor({ enabled={!cadastreEnabled} /> {options.layers.includes('cadastres') ? ( - <> - -
- -
- + setCadastreEnabled((enabled) => !enabled)} + enabled={cadastreEnabled} + /> ) : null} diff --git a/app/javascript/components/MapReader/index.tsx b/app/javascript/components/MapReader/index.tsx index a8662f152..62652708e 100644 --- a/app/javascript/components/MapReader/index.tsx +++ b/app/javascript/components/MapReader/index.tsx @@ -1,4 +1,3 @@ -import 'maplibre-gl/dist/maplibre-gl.css'; import type { FeatureCollection } from 'geojson'; import { MapLibre } from '../shared/maplibre/MapLibre'; diff --git a/app/javascript/components/shared/maplibre/MapLibre.tsx b/app/javascript/components/shared/maplibre/MapLibre.tsx index d160775f8..4a66da89f 100644 --- a/app/javascript/components/shared/maplibre/MapLibre.tsx +++ b/app/javascript/components/shared/maplibre/MapLibre.tsx @@ -8,13 +8,15 @@ import { createContext, useCallback } from 'react'; -import maplibre, { Map, NavigationControl } from 'maplibre-gl'; -import type { Style } from 'maplibre-gl'; +import { createPortal } from 'react-dom'; +import { Map, NavigationControl } from 'maplibre-gl'; +import type { StyleSpecification, IControl } from 'maplibre-gl'; +import 'maplibre-gl/dist/maplibre-gl.css'; import invariant from 'tiny-invariant'; import { useStyle, useElementVisible } from './hooks'; -import { StyleControl } from './StyleControl'; +import { StyleSwitch } from './StyleControl'; const Context = createContext<{ map?: Map | null }>({}); @@ -30,16 +32,15 @@ export function useMapLibre() { } export function MapLibre({ children, layers }: MapLibreProps) { - const isSupported = useMemo( - () => maplibre.supported({ failIfMajorPerformanceCaveat: true }) && !isIE(), - [] - ); + const isSupported = useMemo(() => isWebglSupported(), []); const containerRef = useRef(null); const visible = useElementVisible(containerRef); const [map, setMap] = useState(); + const [styleControlElement, setStyleControlElement] = + useState(null); const onStyleChange = useCallback( - (style: Style) => { + (style: StyleSpecification) => { if (map) { map.setStyle(style); } @@ -56,8 +57,11 @@ export function MapLibre({ children, layers }: MapLibreProps) { style }); map.addControl(new NavigationControl({}), 'top-right'); + const styleControl = new ReactControl(); + map.addControl(styleControl, 'bottom-left'); map.on('load', () => { setMap(map); + setStyleControlElement(styleControl.container); }); } }, [map, style, visible, isSupported]); @@ -91,16 +95,54 @@ export function MapLibre({ children, layers }: MapLibreProps) { return (
- + {styleControlElement != null + ? createPortal( + , + styleControlElement + ) + : null} {map ? children : null}
); } -function isIE() { - const ua = window.navigator.userAgent; - const msie = ua.indexOf('MSIE '); - const trident = ua.indexOf('Trident/'); - return msie > 0 || trident > 0; +function isWebglSupported() { + if (window.WebGLRenderingContext) { + const canvas = document.createElement('canvas'); + try { + // Note that { failIfMajorPerformanceCaveat: true } can be passed as a second argument + // to canvas.getContext(), causing the check to fail if hardware rendering is not available. See + // https://developer.mozilla.org/en-US/docs/Web/API/HTMLCanvasElement/getContext + // for more details. + const context = canvas.getContext('webgl2') || canvas.getContext('webgl'); + if (context && typeof context.getParameter == 'function') { + return true; + } + } catch (e) { + // WebGL is supported, but disabled + } + return false; + } + // WebGL not supported + return false; +} + +export class ReactControl implements IControl { + #container: HTMLElement | null = null; + + get container(): HTMLElement | null { + return this.#container; + } + + onAdd(): HTMLElement { + this.#container = document.createElement('div'); + this.#container.className = 'maplibregl-ctrl maplibregl-ctrl-group ds-ctrl'; + return this.#container; + } + + onRemove(): void { + this.#container?.remove(); + this.#container = null; + } } diff --git a/app/javascript/components/shared/maplibre/StyleControl.tsx b/app/javascript/components/shared/maplibre/StyleControl.tsx index afd46345c..c844531ed 100644 --- a/app/javascript/components/shared/maplibre/StyleControl.tsx +++ b/app/javascript/components/shared/maplibre/StyleControl.tsx @@ -1,6 +1,5 @@ -import { useState, useId } from 'react'; -import { Popover, RadioGroup } from '@headlessui/react'; -import { usePopper } from 'react-popper'; +import { useId, useRef, useEffect } from 'react'; +import { Button, Dialog, DialogTrigger, Popover } from 'react-aria-components'; import { MapIcon } from '@heroicons/react/outline'; import { Slider } from '@reach/slider'; import '@reach/slider/styles.css'; @@ -13,7 +12,7 @@ const STYLES = { ign: 'Carte IGN' }; -export function StyleControl({ +export function StyleSwitch({ styleId, layers, setStyle, @@ -26,107 +25,97 @@ export function StyleControl({ setLayerEnabled: (layer: string, enabled: boolean) => void; setLayerOpacity: (layer: string, opacity: number) => void; }) { - const [buttonElement, setButtonElement] = - useState(); - const [panelElement, setPanelElement] = useState(); - const { styles, attributes } = usePopper(buttonElement, panelElement, { - placement: 'bottom-end' - }); const configurableLayers = Object.entries(layers).filter( ([, { configurable }]) => configurable ); const mapId = useId(); + const buttonRef = useRef(null); + + useEffect(() => { + if (buttonRef.current) { + buttonRef.current.title = 'Sélectionner les couches cartographiques'; + } + }, []); return ( -
- - - - - - + + + +
event.preventDefault()} > - {Object.entries(STYLES).map(([style, title]) => ( - - {({ checked }) => ( - <> +
+ {Object.entries(STYLES).map(([style, title]) => ( +
+
- - {title.replace(/\s/g, ' ')} - - - )} - - ))} - - {configurableLayers.length ? ( -
    - {configurableLayers.map(([layer, { enabled, opacity, name }]) => ( -
  • -
    - { - setLayerEnabled(layer, event.target.checked); + setStyle(event.target.value); }} /> -
    - { - setLayerOpacity(layer, value); - }} - className="mb-1" - title={`Réglage de l’opacité de la couche «${NBS}${name}${NBS}»`} - getAriaLabel={() => - `Réglage de l’opacité de la couche «${NBS}${name}${NBS}»` - } - getAriaValueText={(value) => - `L’opacité de la couche «${NBS}${name}${NBS}» est à ${value}${NBS}%` - } - /> -
  • +
))} - - ) : null} - +
+ {configurableLayers.length ? ( +
+ {configurableLayers.map( + ([layer, { enabled, opacity, name }]) => ( +
+
+ { + setLayerEnabled(layer, event.target.checked); + }} + /> + +
+ { + setLayerOpacity(layer, value); + }} + className="fr-range fr-range--sm mt-1" + title={`Réglage de l’opacité de la couche «${NBS}${name}${NBS}»`} + getAriaLabel={() => + `Réglage de l’opacité de la couche «${NBS}${name}${NBS}»` + } + getAriaValueText={(value) => + `L’opacité de la couche «${NBS}${name}${NBS}» est à ${value}${NBS}%` + } + /> +
+ ) + )} +
+ ) : null} + +
-
+ ); } diff --git a/app/javascript/components/shared/maplibre/hooks.ts b/app/javascript/components/shared/maplibre/hooks.ts index 84f0542a1..348360146 100644 --- a/app/javascript/components/shared/maplibre/hooks.ts +++ b/app/javascript/components/shared/maplibre/hooks.ts @@ -9,7 +9,7 @@ import type { LngLatBoundsLike, LngLat, MapLayerEventType, - Style, + StyleSpecification, LngLatLike } from 'maplibre-gl'; import type { Feature, Geometry } from 'geojson'; @@ -104,7 +104,7 @@ function optionalLayersMap(optionalLayers: string[]): LayersMap { export function useStyle( optionalLayers: string[], - onStyleChange: (style: Style) => void + onStyleChange: (style: StyleSpecification) => void ) { const [styleId, setStyle] = useState('ortho'); const [layers, setLayers] = useState(() => optionalLayersMap(optionalLayers)); diff --git a/app/javascript/components/shared/maplibre/styles/base.ts b/app/javascript/components/shared/maplibre/styles/base.ts index 3400a6c09..8ed1eef44 100644 --- a/app/javascript/components/shared/maplibre/styles/base.ts +++ b/app/javascript/components/shared/maplibre/styles/base.ts @@ -1,7 +1,12 @@ -import type { AnyLayer, Style, RasterLayer, RasterSource } from 'maplibre-gl'; +import type { + LayerSpecification, + RasterLayerSpecification, + RasterSourceSpecification, + StyleSpecification +} from 'maplibre-gl'; import invariant from 'tiny-invariant'; -import cadastreLayers from './layers/cadastre'; +import cadastreLayers from './layers/cadastre.json'; function ignServiceURL(layer: string, style: string, format = 'image/png') { const url = `https://data.geopf.fr/wmts`; @@ -163,7 +168,10 @@ function buildSources() { ); } -function rasterSource(tiles: string[], attribution: string): RasterSource { +function rasterSource( + tiles: string[], + attribution: string +): RasterSourceSpecification { return { type: 'raster', tiles, @@ -174,7 +182,10 @@ function rasterSource(tiles: string[], attribution: string): RasterSource { }; } -function rasterLayer(source: string, opacity: number): RasterLayer { +function rasterLayer( + source: string, + opacity: number +): RasterLayerSpecification { return { id: source, source, @@ -186,14 +197,14 @@ function rasterLayer(source: string, opacity: number): RasterLayer { export function buildOptionalLayers( ids: string[], opacity: Record -): AnyLayer[] { +): LayerSpecification[] { return OPTIONAL_LAYERS.filter(({ id }) => ids.includes(id)) .flatMap(({ layers, id }) => layers.map(([, code]) => [code, opacity[id] / 100] as const) ) .flatMap(([code, opacity]) => code === 'CADASTRE' - ? cadastreLayers + ? (cadastreLayers as LayerSpecification[]) : [rasterLayer(getLayerCode(code), opacity)] ); } @@ -210,9 +221,9 @@ function getLayerCode(code: string) { return code.toLowerCase().replace(/\./g, '-'); } -export default { +export const style: StyleSpecification = { version: 8, - metadat: { + metadata: { 'mapbox:autocomposite': false, 'mapbox:groups': { 1444849242106.713: { collapsed: false, name: 'Places' }, @@ -257,5 +268,6 @@ export default { ...buildSources() }, sprite: 'https://openmaptiles.github.io/osm-bright-gl-style/sprite', - glyphs: 'https://openmaptiles.geo.data.gouv.fr/fonts/{fontstack}/{range}.pbf' -} as Style; + glyphs: 'https://openmaptiles.geo.data.gouv.fr/fonts/{fontstack}/{range}.pbf', + layers: [] +}; diff --git a/app/javascript/components/shared/maplibre/styles/index.ts b/app/javascript/components/shared/maplibre/styles/index.ts index b7d865e29..1b9088861 100644 --- a/app/javascript/components/shared/maplibre/styles/index.ts +++ b/app/javascript/components/shared/maplibre/styles/index.ts @@ -1,9 +1,14 @@ -import type { Style } from 'maplibre-gl'; +import type { LayerSpecification, StyleSpecification } from 'maplibre-gl'; -import baseStyle, { buildOptionalLayers, getLayerName, NBS } from './base'; -import orthoStyle from './layers/ortho'; -import vectorStyle from './layers/vector'; -import ignLayers from './layers/ign'; +import { + style as baseStyle, + buildOptionalLayers, + getLayerName, + NBS +} from './base'; +import ignLayers from './layers/ign.json'; +import orthoLayers from './layers/ortho.json'; +import vectorLayers from './layers/vector.json'; export { getLayerName, NBS }; @@ -21,20 +26,20 @@ export function getMapStyle( id: string, layers: string[], opacity: Record -): Style & { id: string } { +): StyleSpecification & { id: string } { const style = { ...baseStyle, id }; switch (id) { case 'ortho': - style.layers = orthoStyle; + style.layers = orthoLayers as LayerSpecification[]; style.name = 'Photographies aériennes'; break; case 'vector': - style.layers = vectorStyle; + style.layers = vectorLayers as LayerSpecification[]; style.name = 'Carte OSM'; break; case 'ign': - style.layers = ignLayers; + style.layers = ignLayers as LayerSpecification[]; style.name = 'Carte IGN'; break; } diff --git a/app/javascript/components/shared/maplibre/styles/layers/cadastre.json b/app/javascript/components/shared/maplibre/styles/layers/cadastre.json new file mode 100644 index 000000000..e72c332a2 --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/cadastre.json @@ -0,0 +1,106 @@ +[ + { + "id": "batiments-line", + "type": "line", + "source": "cadastre", + "source-layer": "batiments", + "minzoom": 16, + "maxzoom": 22, + "layout": { "visibility": "visible" }, + "paint": { + "line-opacity": 1, + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1 + } + }, + { + "id": "batiments-fill", + "type": "fill", + "source": "cadastre", + "source-layer": "batiments", + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "rgba(150, 150, 150, 1)", + "fill-opacity": { + "stops": [ + [16, 0], + [17, 0.6] + ] + }, + "fill-antialias": true + } + }, + { + "id": "parcelles", + "type": "line", + "source": "cadastre", + "source-layer": "parcelles", + "minzoom": 15.5, + "maxzoom": 24, + "layout": { + "visibility": "visible", + "line-cap": "butt", + "line-join": "miter", + "line-miter-limit": 2 + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": 0.8, + "line-width": { + "stops": [ + [16, 1.5], + [17, 2] + ] + }, + "line-offset": 0, + "line-blur": 0, + "line-translate": [0, 1], + "line-dasharray": [1], + "line-gap-width": 0 + } + }, + { + "id": "parcelles-fill", + "type": "fill", + "source": "cadastre", + "source-layer": "parcelles", + "layout": { + "visibility": "visible" + }, + "paint": { + "fill-color": "rgba(129, 123, 0, 1)", + "fill-opacity": [ + "case", + ["boolean", ["feature-state", "hover"], false], + 0.7, + 0.1 + ] + } + }, + { + "id": "parcelle-highlighted", + "type": "fill", + "source": "cadastre", + "source-layer": "parcelles", + "filter": ["in", "id", ""], + "paint": { + "fill-color": "rgba(1, 129, 0, 1)", + "fill-opacity": 0.7 + } + }, + { + "id": "sections", + "type": "line", + "source": "cadastre", + "source-layer": "sections", + "minzoom": 12, + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-opacity": 0.7, + "line-width": 2, + "line-dasharray": [3, 3], + "line-translate": [0, 0] + } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/cadastre.ts b/app/javascript/components/shared/maplibre/styles/layers/cadastre.ts deleted file mode 100644 index 4ef68ed6b..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/cadastre.ts +++ /dev/null @@ -1,110 +0,0 @@ -import type { AnyLayer } from 'maplibre-gl'; - -const layers: AnyLayer[] = [ - { - id: 'batiments-line', - type: 'line', - source: 'cadastre', - 'source-layer': 'batiments', - minzoom: 16, - maxzoom: 22, - layout: { visibility: 'visible' }, - paint: { - 'line-opacity': 1, - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1 - } - }, - { - id: 'batiments-fill', - type: 'fill', - source: 'cadastre', - 'source-layer': 'batiments', - layout: { visibility: 'visible' }, - paint: { - 'fill-color': 'rgba(150, 150, 150, 1)', - 'fill-opacity': { - stops: [ - [16, 0], - [17, 0.6] - ] - }, - 'fill-antialias': true - } - }, - { - id: 'parcelles', - type: 'line', - source: 'cadastre', - 'source-layer': 'parcelles', - minzoom: 15.5, - maxzoom: 24, - layout: { - visibility: 'visible', - 'line-cap': 'butt', - 'line-join': 'miter', - 'line-miter-limit': 2 - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': 0.8, - 'line-width': { - stops: [ - [16, 1.5], - [17, 2] - ] - }, - 'line-offset': 0, - 'line-blur': 0, - 'line-translate': [0, 1], - 'line-dasharray': [1], - 'line-gap-width': 0 - } - }, - { - id: 'parcelles-fill', - type: 'fill', - source: 'cadastre', - 'source-layer': 'parcelles', - layout: { - visibility: 'visible' - }, - paint: { - 'fill-color': 'rgba(129, 123, 0, 1)', - 'fill-opacity': [ - 'case', - ['boolean', ['feature-state', 'hover'], false], - 0.7, - 0.1 - ] - } - }, - { - id: 'parcelle-highlighted', - type: 'fill', - source: 'cadastre', - 'source-layer': 'parcelles', - filter: ['in', 'id', ''], - paint: { - 'fill-color': 'rgba(1, 129, 0, 1)', - 'fill-opacity': 0.7 - } - }, - { - id: 'sections', - type: 'line', - source: 'cadastre', - 'source-layer': 'sections', - minzoom: 12, - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-opacity': 0.7, - 'line-width': 2, - 'line-dasharray': [3, 3], - 'line-translate': [0, 0] - } - } -]; - -export default layers; diff --git a/app/javascript/components/shared/maplibre/styles/layers/ign.json b/app/javascript/components/shared/maplibre/styles/layers/ign.json new file mode 100644 index 000000000..eb582b2af --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/ign.json @@ -0,0 +1,8 @@ +[ + { + "id": "ign", + "source": "plan-ign", + "type": "raster", + "paint": { "raster-resampling": "linear" } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/ign.ts b/app/javascript/components/shared/maplibre/styles/layers/ign.ts deleted file mode 100644 index 545d41911..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/ign.ts +++ /dev/null @@ -1,12 +0,0 @@ -import type { RasterLayer } from 'maplibre-gl'; - -const layers: RasterLayer[] = [ - { - id: 'ign', - source: 'plan-ign', - type: 'raster', - paint: { 'raster-resampling': 'linear' } - } -]; - -export default layers; diff --git a/app/javascript/components/shared/maplibre/styles/layers/ortho.json b/app/javascript/components/shared/maplibre/styles/layers/ortho.json new file mode 100644 index 000000000..c8c3f0334 --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/ortho.json @@ -0,0 +1,2647 @@ +[ + { + "id": "photographies-aeriennes", + "type": "raster", + "source": "photographies-aeriennes", + "paint": { "raster-resampling": "linear" } + }, + { + "id": "communes", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "communes", + "minzoom": 10, + "maxzoom": 24, + "filter": ["all"], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1.5, + "line-opacity": 1, + "line-blur": 0 + } + }, + { + "id": "departements", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "departements", + "minzoom": 0, + "maxzoom": 24, + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1, + "line-opacity": 1 + } + }, + { + "id": "regions", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "regions", + "minzoom": 0, + "maxzoom": 24, + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "rgba(0, 0, 0, 1)", + "line-width": 1, + "line-opacity": 1 + } + }, + { + "id": "waterway_tunnel", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 14, + "filter": [ + "all", + ["in", "class", "river", "stream", "canal"], + ["==", "brunnel", "tunnel"] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-dasharray": [2, 4], + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-other", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + } + } + }, + { + "id": "waterway-other-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-stream-canal", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-stream-canal-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-river", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + } + } + }, + { + "id": "waterway-river-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "none" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + }, + "line-dasharray": [3, 2.5] + } + }, + { + "id": "tunnel-service-track-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [16, 4], + [20, 11] + ] + } + } + }, + { + "id": "tunnel-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "minor"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [12, 0], + [12.5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [12, 0.5], + [13, 1], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "tunnel-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#e9ac77", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-path", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "tunnel"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "tunnel-service-track", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [15.5, 0], + [16, 2], + [20, 7.5] + ] + } + } + }, + { + "id": "tunnel-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["==", "class", "minor_road"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [13.5, 0], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 10] + ] + } + } + }, + { + "id": "tunnel-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [2, 2], + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "ferry", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["in", "class", "ferry"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "rgba(108, 159, 182, 1)", + "line-dasharray": [2, 2], + "line-width": 1.1 + } + }, + { + "id": "aeroway-taxiway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "taxiway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 1, + "line-width": { + "base": 1.5, + "stops": [ + [11, 2], + [17, 12] + ] + } + } + }, + { + "id": "aeroway-runway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "runway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 0.2, + "line-width": { + "base": 1.5, + "stops": [ + [11, 5], + [17, 55] + ] + } + } + }, + { + "id": "aeroway-taxiway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["in", "class", "taxiway"], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 1] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 1], + [17, 10] + ] + } + } + }, + { + "id": "aeroway-runway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": ["all", ["in", "class", "runway"], ["==", "$type", "LineString"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 0.2] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 4], + [17, 50] + ] + } + } + }, + { + "id": "road_area_pier", + "type": "fill", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "pier"]], + "layout": { "visibility": "visible" }, + "paint": { "fill-antialias": true, "fill-color": "#f8f4f0" } + }, + { + "id": "road_pier", + "type": "line", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "LineString"], ["in", "class", "pier"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [17, 4] + ] + } + } + }, + { + "id": "highway-area", + "type": "fill", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["!in", "class", "pier"]], + "layout": { "visibility": "visible" }, + "paint": { + "fill-antialias": false, + "fill-color": "hsla(0, 0%, 89%, 0.56)", + "fill-opacity": { + "stops": [ + [15, 0], + [16, 0.9] + ] + }, + "fill-outline-color": "#cfcdca" + } + }, + { + "id": "highway-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [14, 0], + [15, 0.5] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [15, 0.5], + [16, 5] + ] + } + } + }, + { + "id": "highway-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [15, 0], + [16, 0.3] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "highway-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [7, 0], + [8, 0.6], + [9, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-trunk-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "trunk"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [5, 0], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 4, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [8, 0], + [9, 0.2] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [4, 0], + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-path", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["==", "class", "path"]] + ], + "layout": { "visibility": "none" }, + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "highway-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.4] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [16, 0], + [17, 2.5] + ] + } + } + }, + { + "id": "highway-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [8, 0.5], + [20, 13] + ] + }, + "line-opacity": { + "stops": [ + [11, 0], + [13, 0.3] + ] + } + } + }, + { + "id": "highway-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [8.5, 0], + [9, 0.5], + [20, 18] + ] + }, + "line-opacity": { + "stops": [ + [8, 0], + [9, 0.3] + ] + } + } + }, + { + "id": "highway-trunk", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["in", "class", "trunk"]] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + } + } + }, + { + "id": "highway-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": { + "stops": [ + [8, 0], + [9, 0.2] + ] + } + } + }, + { + "id": "railway-transit", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-transit-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway-service", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-service-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + }, + "line-opacity": { + "stops": [ + [11, 0], + [13, 1] + ] + } + } + }, + { + "id": "railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "bridge-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 0.3, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 28] + ] + } + } + }, + { + "id": "bridge-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "hsl(28, 76%, 67%)", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 26] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "bridge-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + }, + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + } + } + }, + { + "id": "bridge-path-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 18] + ] + } + } + }, + { + "id": "bridge-path", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "bridge-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 20] + ] + }, + "line-opacity": { + "stops": [ + [16, 0], + [17, 0.3] + ] + } + } + }, + { + "id": "bridge-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "bridge-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + }, + "line-opacity": 0.3 + } + }, + { + "id": "bridge-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "bridge-railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "cablecar", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [11, 1], + [19, 2.5] + ] + } + } + }, + { + "id": "cablecar-dash", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-dasharray": [2, 3], + "line-width": { + "base": 1, + "stops": [ + [11, 3], + [19, 5.5] + ] + } + } + }, + { + "id": "boundary-land-level-4", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + [">=", "admin_level", 4], + ["<=", "admin_level", 8], + ["!=", "maritime", 1] + ], + "layout": { "line-join": "round", "visibility": "none" }, + "paint": { + "line-color": "#9e9cab", + "line-dasharray": [3, 1, 1, 1], + "line-width": { + "base": 1.4, + "stops": [ + [4, 0.4], + [5, 1], + [12, 3] + ] + } + } + }, + { + "id": "boundary-land-level-2", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + ["==", "admin_level", 2], + ["!=", "maritime", 1], + ["!=", "disputed", 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "none" + }, + "paint": { + "line-color": "hsl(248, 7%, 66%)", + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-land-disputed", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["!=", "maritime", 1], ["==", "disputed", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "none" + }, + "paint": { + "line-color": "hsl(248, 7%, 70%)", + "line-dasharray": [1, 3], + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-water", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["in", "admin_level", 2, 4], ["==", "maritime", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(154, 189, 214, 1)", + "line-opacity": { + "stops": [ + [6, 0.6], + [10, 1] + ] + }, + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "water-name-lakeline", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["==", "$type", "LineString"], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-ocean", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["==", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["!in", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": { + "stops": [ + [0, 10], + [6, 14] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 51, 178, 1)", + "text-halo-color": "rgba(255, 255, 255, 1)", + "text-halo-width": 1.5 + } + }, + { + "id": "road_oneway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", 1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": 90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "road_oneway_opposite", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", -1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": -90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "highway-name-path", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15.5, + "filter": ["==", "class", "path"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "rgba(171, 86, 0, 1)", + "text-halo-color": "#f8f4f0", + "text-halo-width": 2 + } + }, + { + "id": "highway-name-minor", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "minor", "service", "track"] + ], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(143, 69, 0, 1)", + "text-halo-blur": 0.5, + "text-halo-width": 2, + "text-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "highway-name-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 12.2, + "filter": ["in", "class", "primary", "secondary", "tertiary", "trunk"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + }, + "visibility": "visible", + "symbol-z-order": "source" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-blur": 0.5, + "text-halo-width": 1, + "text-halo-color": "rgba(255, 255, 255, 1)" + } + }, + { + "id": "highway-shield-us-interstate", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 7, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-interstate"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [7, "point"], + [7, "line"], + [8, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "highway-shield-us-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 9, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "highway-shield", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 8, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["!in", "network", "us-interstate", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "road_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10, + "visibility": "visible" + }, + "paint": { + "icon-opacity": { + "stops": [ + [8, 0], + [9, 1] + ] + }, + "text-opacity": { + "stops": [ + [8, 0], + [9, 1] + ] + } + } + }, + { + "id": "waterway-name", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 13, + "filter": ["all", ["==", "$type", "LineString"], ["has", "name"]], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(2, 72, 255, 1)", + "text-halo-color": "rgba(255,255,255,1)", + "text-halo-width": 1.5, + "text-halo-blur": 0 + } + }, + { + "id": "airport-label-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "aerodrome_label", + "minzoom": 10, + "filter": ["all", ["has", "iata"]], + "layout": { + "icon-image": "airport_11", + "icon-size": 1, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-3", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 16, + "filter": [ + "all", + ["==", "$type", "Point"], + [">=", "rank", 25], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 20, + "text-size": 12, + "visibility": "visible", + "symbol-spacing": 250, + "symbol-avoid-edges": false, + "text-letter-spacing": 0, + "icon-padding": 2, + "symbol-placement": "point", + "symbol-z-order": "auto", + "text-line-height": 1.2, + "text-allow-overlap": false, + "text-ignore-placement": false, + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-optional": false + }, + "paint": { + "text-color": "rgba(2, 2, 3, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(232, 227, 227, 1)", + "text-halo-width": 2, + "text-translate-anchor": "map", + "text-opacity": 1 + } + }, + { + "id": "poi-level-2", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 24], + [">=", "rank", 15], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(2, 2, 3, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(232, 227, 227, 1)", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-1", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 14, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 14], + ["has", "name"], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(2, 2, 3, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(232, 227, 227, 1)", + "text-halo-width": 2 + } + }, + { + "id": "poi-railway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 13, + "filter": [ + "all", + ["==", "$type", "Point"], + ["has", "name"], + ["==", "class", "railway"], + ["==", "subclass", "station"] + ], + "layout": { + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-image": "{class}_11", + "icon-optional": false, + "text-allow-overlap": false, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-ignore-placement": false, + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12 + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-blur": 0.5, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1 + } + }, + { + "id": "place-village", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "village"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 12], + [15, 22] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-town", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "town"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 14], + [15, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["!=", "capital", 2], ["==", "class", "city"]], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "rgba(0, 0, 0, 1)", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city-capital", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["==", "capital", 2], ["==", "class", "city"]], + "layout": { + "icon-image": "star_11", + "icon-size": 0.8, + "text-anchor": "left", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-offset": [0.4, 0], + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-country-other", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["!has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-3", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-2", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 2], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [2, 11], + [5, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-1", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 1], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [1, 11], + [4, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-continent", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 1, + "filter": ["==", "class", "continent"], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": 14, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/ortho.ts b/app/javascript/components/shared/maplibre/styles/layers/ortho.ts deleted file mode 100644 index 41d70cbcd..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/ortho.ts +++ /dev/null @@ -1,2644 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import type { AnyLayer } from 'maplibre-gl'; - -const layers: AnyLayer[] = [ - { - id: 'photographies-aeriennes', - type: 'raster', - source: 'photographies-aeriennes', - paint: { 'raster-resampling': 'linear' } - }, - { - id: 'communes', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'communes', - minzoom: 10, - maxzoom: 24, - filter: ['all'], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1.5, - 'line-opacity': 1, - 'line-blur': 0 - } - }, - { - id: 'departements', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'departements', - minzoom: 0, - maxzoom: 24, - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1, - 'line-opacity': 1 - } - }, - { - id: 'regions', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'regions', - minzoom: 0, - maxzoom: 24, - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'rgba(0, 0, 0, 1)', - 'line-width': 1, - 'line-opacity': 1 - } - }, - { - id: 'waterway_tunnel', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 14, - filter: [ - 'all', - ['in', 'class', 'river', 'stream', 'canal'], - ['==', 'brunnel', 'tunnel'] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-dasharray': [2, 4], - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-other', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - } - } - }, - { - id: 'waterway-other-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-stream-canal', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-stream-canal-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-river', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - } - } - }, - { - id: 'waterway-river-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'none' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - }, - 'line-dasharray': [3, 2.5] - } - }, - { - id: 'tunnel-service-track-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [16, 4], - [20, 11] - ] - } - } - }, - { - id: 'tunnel-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [12, 0], - [12.5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [12, 0.5], - [13, 1], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'tunnel-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#e9ac77', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-path', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'tunnel-service-track', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-width': { - base: 1.2, - stops: [ - [15.5, 0], - [16, 2], - [20, 7.5] - ] - } - } - }, - { - id: 'tunnel-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor_road']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [13.5, 0], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 10] - ] - } - } - }, - { - id: 'tunnel-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#ffdaa6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [2, 2], - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'ferry', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['in', 'class', 'ferry']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'rgba(108, 159, 182, 1)', - 'line-dasharray': [2, 2], - 'line-width': 1.1 - } - }, - { - id: 'aeroway-taxiway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'taxiway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 1, - 'line-width': { - base: 1.5, - stops: [ - [11, 2], - [17, 12] - ] - } - } - }, - { - id: 'aeroway-runway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'runway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 0.2, - 'line-width': { - base: 1.5, - stops: [ - [11, 5], - [17, 55] - ] - } - } - }, - { - id: 'aeroway-taxiway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'taxiway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 1] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 1], - [17, 10] - ] - } - } - }, - { - id: 'aeroway-runway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'runway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 0.2] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 4], - [17, 50] - ] - } - } - }, - { - id: 'road_area_pier', - type: 'fill', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'pier']], - layout: { visibility: 'visible' }, - paint: { 'fill-antialias': true, 'fill-color': '#f8f4f0' } - }, - { - id: 'road_pier', - type: 'line', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'LineString'], ['in', 'class', 'pier']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [17, 4] - ] - } - } - }, - { - id: 'highway-area', - type: 'fill', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['!in', 'class', 'pier']], - layout: { visibility: 'visible' }, - paint: { - 'fill-antialias': false, - 'fill-color': 'hsla(0, 0%, 89%, 0.56)', - 'fill-opacity': { - stops: [ - [15, 0], - [16, 0.9] - ] - }, - 'fill-outline-color': '#cfcdca' - } - }, - { - id: 'highway-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [14, 0], - [15, 0.5] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [15, 0.5], - [16, 5] - ] - } - } - }, - { - id: 'highway-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [15, 0], - [16, 0.3] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'highway-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [7, 0], - [8, 0.6], - [9, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-trunk-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'trunk'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [5, 0], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 4, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [8, 0], - [9, 0.2] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [4, 0], - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-path', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'path']] - ], - layout: { visibility: 'none' }, - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'highway-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.4] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [16, 0], - [17, 2.5] - ] - } - } - }, - { - id: 'highway-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [8, 0.5], - [20, 13] - ] - }, - 'line-opacity': { - stops: [ - [11, 0], - [13, 0.3] - ] - } - } - }, - { - id: 'highway-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [8.5, 0], - [9, 0.5], - [20, 18] - ] - }, - 'line-opacity': { - stops: [ - [8, 0], - [9, 0.3] - ] - } - } - }, - { - id: 'highway-trunk', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'trunk']] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - } - } - }, - { - id: 'highway-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': { - stops: [ - [8, 0], - [9, 0.2] - ] - } - } - }, - { - id: 'railway-transit', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-transit-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway-service', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-service-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - }, - 'line-opacity': { - stops: [ - [11, 0], - [13, 1] - ] - } - } - }, - { - id: 'railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'bridge-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 0.3, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 28] - ] - } - } - }, - { - id: 'bridge-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': 'hsl(28, 76%, 67%)', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 26] - ] - }, - 'line-opacity': 0.3 - } - }, - { - id: 'bridge-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - }, - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - } - } - }, - { - id: 'bridge-path-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 18] - ] - } - } - }, - { - id: 'bridge-path', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'bridge-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 20] - ] - }, - 'line-opacity': { - stops: [ - [16, 0], - [17, 0.3] - ] - } - } - }, - { - id: 'bridge-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': 0.3 - } - }, - { - id: 'bridge-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - }, - 'line-opacity': 0.3 - } - }, - { - id: 'bridge-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'bridge-railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'cablecar', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-width': { - base: 1, - stops: [ - [11, 1], - [19, 2.5] - ] - } - } - }, - { - id: 'cablecar-dash', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-dasharray': [2, 3], - 'line-width': { - base: 1, - stops: [ - [11, 3], - [19, 5.5] - ] - } - } - }, - { - id: 'boundary-land-level-4', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['>=', 'admin_level', 4], - ['<=', 'admin_level', 8], - ['!=', 'maritime', 1] - ], - layout: { 'line-join': 'round', visibility: 'none' }, - paint: { - 'line-color': '#9e9cab', - 'line-dasharray': [3, 1, 1, 1], - 'line-width': { - base: 1.4, - stops: [ - [4, 0.4], - [5, 1], - [12, 3] - ] - } - } - }, - { - id: 'boundary-land-level-2', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['==', 'admin_level', 2], - ['!=', 'maritime', 1], - ['!=', 'disputed', 1] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'none' - }, - paint: { - 'line-color': 'hsl(248, 7%, 66%)', - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-land-disputed', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['!=', 'maritime', 1], ['==', 'disputed', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'none' - }, - paint: { - 'line-color': 'hsl(248, 7%, 70%)', - 'line-dasharray': [1, 3], - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-water', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['in', 'admin_level', 2, 4], ['==', 'maritime', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(154, 189, 214, 1)', - 'line-opacity': { - stops: [ - [6, 0.6], - [10, 1] - ] - }, - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'water-name-lakeline', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['==', '$type', 'LineString'], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-ocean', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['==', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['!in', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': { - stops: [ - [0, 10], - [6, 14] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 51, 178, 1)', - 'text-halo-color': 'rgba(255, 255, 255, 1)', - 'text-halo-width': 1.5 - } - }, - { - id: 'road_oneway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', 1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': 90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'road_oneway_opposite', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', -1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': -90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'highway-name-path', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15.5, - filter: ['==', 'class', 'path'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': 'rgba(171, 86, 0, 1)', - 'text-halo-color': '#f8f4f0', - 'text-halo-width': 2 - } - }, - { - id: 'highway-name-minor', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['in', 'class', 'minor', 'service', 'track'] - ], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(143, 69, 0, 1)', - 'text-halo-blur': 0.5, - 'text-halo-width': 2, - 'text-halo-color': 'rgba(255, 255, 255, 1)' - } - }, - { - id: 'highway-name-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 12.2, - filter: ['in', 'class', 'primary', 'secondary', 'tertiary', 'trunk'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - }, - visibility: 'visible', - 'symbol-z-order': 'source' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-blur': 0.5, - 'text-halo-width': 1, - 'text-halo-color': 'rgba(255, 255, 255, 1)' - } - }, - { - id: 'highway-shield-us-interstate', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 7, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-interstate'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [7, 'point'], - [7, 'line'], - [8, 'line'] - ] - }, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'highway-shield-us-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 9, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'highway-shield', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 8, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['!in', 'network', 'us-interstate', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': 'road_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10, - visibility: 'visible' - }, - paint: { - 'icon-opacity': { - stops: [ - [8, 0], - [9, 1] - ] - }, - 'text-opacity': { - stops: [ - [8, 0], - [9, 1] - ] - } - } - }, - { - id: 'waterway-name', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 13, - filter: ['all', ['==', '$type', 'LineString'], ['has', 'name']], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(2, 72, 255, 1)', - 'text-halo-color': 'rgba(255,255,255,1)', - 'text-halo-width': 1.5, - 'text-halo-blur': 0 - } - }, - { - id: 'airport-label-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'aerodrome_label', - minzoom: 10, - filter: ['all', ['has', 'iata']], - layout: { - 'icon-image': 'airport_11', - 'icon-size': 1, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-3', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 16, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['>=', 'rank', 25], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 20, - 'text-size': 12, - visibility: 'visible', - 'symbol-spacing': 250, - 'symbol-avoid-edges': false, - 'text-letter-spacing': 0, - 'icon-padding': 2, - 'symbol-placement': 'point', - 'symbol-z-order': 'auto' as any, - 'text-line-height': 1.2, - 'text-allow-overlap': false, - 'text-ignore-placement': false, - 'icon-allow-overlap': false, - 'icon-ignore-placement': false, - 'icon-optional': false - }, - paint: { - 'text-color': 'rgba(2, 2, 3, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(232, 227, 227, 1)', - 'text-halo-width': 2, - 'text-translate-anchor': 'map', - 'text-opacity': 1 - } - }, - { - id: 'poi-level-2', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 24], - ['>=', 'rank', 15], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(2, 2, 3, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(232, 227, 227, 1)', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-1', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 14, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 14], - ['has', 'name'], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(2, 2, 3, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(232, 227, 227, 1)', - 'text-halo-width': 2 - } - }, - { - id: 'poi-railway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 13, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['has', 'name'], - ['==', 'class', 'railway'], - ['==', 'subclass', 'station'] - ], - layout: { - 'icon-allow-overlap': false, - 'icon-ignore-placement': false, - 'icon-image': '{class}_11', - 'icon-optional': false, - 'text-allow-overlap': false, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-ignore-placement': false, - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12 - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-blur': 0.5, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1 - } - }, - { - id: 'place-village', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'village'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 12], - [15, 22] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-town', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'town'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 14], - [15, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['!=', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': 'rgba(0, 0, 0, 1)', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city-capital', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['==', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'icon-image': 'star_11', - 'icon-size': 0.8, - 'text-anchor': 'left', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-offset': [0.4, 0], - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-country-other', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['!has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-3', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-2', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 2], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [2, 11], - [5, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-1', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 1], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [1, 11], - [4, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-continent', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - maxzoom: 1, - filter: ['==', 'class', 'continent'], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': 14, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - } -]; - -export default layers; diff --git a/app/javascript/components/shared/maplibre/styles/layers/vector.json b/app/javascript/components/shared/maplibre/styles/layers/vector.json new file mode 100644 index 000000000..a177876b6 --- /dev/null +++ b/app/javascript/components/shared/maplibre/styles/layers/vector.json @@ -0,0 +1,2866 @@ +[ + { + "id": "background", + "type": "background", + "minzoom": 0, + "maxzoom": 24, + "layout": { "visibility": "visible" }, + "paint": { "background-color": "rgba(255, 246, 241, 1)" } + }, + { + "id": "landcover-glacier", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "subclass", "glacier"], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "#fff", + "fill-opacity": { + "base": 1, + "stops": [ + [0, 0.9], + [10, 0.3] + ] + } + } + }, + { + "id": "landuse-residential", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["in", "class", "residential", "suburb", "neighbourhood"] + ], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": { + "base": 1, + "stops": [ + [12, "hsla(30, 19%, 90%, 0.4)"], + [16, "hsla(30, 19%, 90%, 0.2)"] + ] + } + } + }, + { + "id": "landuse-commercial", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["==", "class", "commercial"] + ], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "hsla(0, 60%, 87%, 0.23)" } + }, + { + "id": "landuse-industrial", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["==", "class", "industrial"] + ], + "paint": { "fill-color": "hsla(49, 100%, 88%, 0.34)" } + }, + { + "id": "landuse-cemetery", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "cemetery"], + "paint": { "fill-color": "#e0e4dd" } + }, + { + "id": "landuse-hospital", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "hospital"], + "paint": { "fill-color": "#fde" } + }, + { + "id": "landuse-school", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "school"], + "paint": { "fill-color": "#f0e8f8" } + }, + { + "id": "landuse-railway", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "railway"], + "paint": { "fill-color": "hsla(30, 19%, 90%, 0.4)" } + }, + { + "id": "landcover-wood", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "wood"], + "paint": { + "fill-antialias": { + "base": 1, + "stops": [ + [0, false], + [9, true] + ] + }, + "fill-color": "#6a4", + "fill-opacity": 0.1, + "fill-outline-color": "hsla(0, 0%, 0%, 0.03)" + } + }, + { + "id": "landcover-grass", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "grass"], + "paint": { "fill-color": "#d8e8c8", "fill-opacity": 1 } + }, + { + "id": "landcover-grass-park", + "type": "fill", + "metadata": { "mapbox:group": "1444849388993.3071" }, + "source": "openmaptiles", + "source-layer": "park", + "filter": ["==", "class", "public_park"], + "paint": { "fill-color": "#d8e8c8", "fill-opacity": 0.8 } + }, + { + "id": "waterway_tunnel", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 14, + "filter": [ + "all", + ["in", "class", "river", "stream", "canal"], + ["==", "brunnel", "tunnel"] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-dasharray": [2, 4], + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-other", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + } + } + }, + { + "id": "waterway-other-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["!in", "class", "canal", "river", "stream"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 2] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-stream-canal", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + } + } + }, + { + "id": "waterway-stream-canal-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["in", "class", "canal", "stream"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.3, + "stops": [ + [13, 0.5], + [20, 6] + ] + }, + "line-dasharray": [4, 3] + } + }, + { + "id": "waterway-river", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 0] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + } + } + }, + { + "id": "waterway-river-intermittent", + "type": "line", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "class", "river"], + ["!=", "brunnel", "tunnel"], + ["==", "intermittent", 1] + ], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "#a0c8f0", + "line-width": { + "base": 1.2, + "stops": [ + [10, 0.8], + [20, 6] + ] + }, + "line-dasharray": [3, 2.5] + } + }, + { + "id": "water-offset", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "maxzoom": 8, + "filter": ["==", "$type", "Polygon"], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "#a0c8f0", + "fill-opacity": 1, + "fill-translate": { + "base": 1, + "stops": [ + [6, [2, 0]], + [8, [0, 0]] + ] + } + } + }, + { + "id": "water", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all", ["!=", "intermittent", 1]], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "hsl(210, 67%, 85%)" } + }, + { + "id": "water-intermittent", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all", ["==", "intermittent", 1]], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "hsl(210, 67%, 85%)", "fill-opacity": 0.7 } + }, + { + "id": "water-pattern", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all"], + "layout": { "visibility": "visible" }, + "paint": { "fill-pattern": "wave", "fill-translate": [0, 2.5] } + }, + { + "id": "landcover-ice-shelf", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "subclass", "ice_shelf"], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "#fff", + "fill-opacity": { + "base": 1, + "stops": [ + [0, 0.9], + [10, 0.3] + ] + } + } + }, + { + "id": "landcover-sand", + "type": "fill", + "metadata": { "mapbox:group": "1444849382550.77" }, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["all", ["==", "class", "sand"]], + "layout": { "visibility": "visible" }, + "paint": { "fill-color": "rgba(245, 238, 188, 1)", "fill-opacity": 1 } + }, + { + "id": "building", + "type": "fill", + "metadata": { "mapbox:group": "1444849364238.8171" }, + "source": "openmaptiles", + "source-layer": "building", + "layout": { "visibility": "none" }, + "paint": { + "fill-antialias": true, + "fill-color": { + "base": 1, + "stops": [ + [15.5, "#f2eae2"], + [16, "#dfdbd7"] + ] + } + } + }, + { + "id": "building-top", + "type": "fill", + "metadata": { "mapbox:group": "1444849364238.8171" }, + "source": "openmaptiles", + "source-layer": "building", + "layout": { "visibility": "none" }, + "paint": { + "fill-color": "#f2eae2", + "fill-opacity": { + "base": 1, + "stops": [ + [13, 0], + [16, 1] + ] + }, + "fill-outline-color": "#dfdbd7", + "fill-translate": { + "base": 1, + "stops": [ + [14, [0, 0]], + [16, [-2, -2]] + ] + } + } + }, + { + "id": "tunnel-service-track-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#cfcdca", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [16, 4], + [20, 11] + ] + } + } + }, + { + "id": "tunnel-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "minor"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [12, 0], + [12.5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [12, 0.5], + [13, 1], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "tunnel-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#e9ac77", + "line-dasharray": [0.5, 0.25], + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "tunnel-path", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "tunnel"], ["==", "class", "path"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "tunnel-service-track", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "service", "track"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-width": { + "base": 1.2, + "stops": [ + [15.5, 0], + [16, 2], + [20, 7.5] + ] + } + } + }, + { + "id": "tunnel-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["==", "class", "minor_road"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [13.5, 0], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "tunnel-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 10] + ] + } + } + }, + { + "id": "tunnel-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fff4c6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "motorway"]], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#ffdaa6", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "tunnel-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849354174.1904" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "tunnel"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [2, 2], + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "ferry", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["in", "class", "ferry"]], + "layout": { "line-join": "round", "visibility": "none" }, + "paint": { + "line-color": "rgba(108, 159, 182, 1)", + "line-dasharray": [2, 2], + "line-width": 1.1 + } + }, + { + "id": "aeroway-taxiway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "taxiway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 1, + "line-width": { + "base": 1.5, + "stops": [ + [11, 2], + [17, 12] + ] + } + } + }, + { + "id": "aeroway-runway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": ["all", ["in", "class", "runway"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(153, 153, 153, 1)", + "line-opacity": 1, + "line-width": { + "base": 1.5, + "stops": [ + [11, 5], + [17, 55] + ] + } + } + }, + { + "id": "aeroway-area", + "type": "fill", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["in", "class", "runway", "taxiway"] + ], + "layout": { "visibility": "visible" }, + "paint": { + "fill-color": "rgba(255, 255, 255, 1)", + "fill-opacity": { + "base": 1, + "stops": [ + [13, 0], + [14, 1] + ] + } + } + }, + { + "id": "aeroway-taxiway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["in", "class", "taxiway"], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 1] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 1], + [17, 10] + ] + } + } + }, + { + "id": "aeroway-runway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": ["all", ["in", "class", "runway"], ["==", "$type", "LineString"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": { + "base": 1, + "stops": [ + [11, 0], + [12, 1] + ] + }, + "line-width": { + "base": 1.5, + "stops": [ + [11, 4], + [17, 50] + ] + } + } + }, + { + "id": "road_area_pier", + "type": "fill", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "pier"]], + "layout": { "visibility": "none" }, + "paint": { "fill-antialias": true, "fill-color": "#f8f4f0" } + }, + { + "id": "road_pier", + "type": "line", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 0, + "filter": ["all", ["==", "$type", "LineString"], ["in", "class", "pier"]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "none" + }, + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1], + [17, 4] + ] + } + } + }, + { + "id": "highway-area", + "type": "fill", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["!in", "class", "pier"]], + "layout": { "visibility": "visible" }, + "paint": { + "fill-antialias": false, + "fill-color": "hsla(0, 0%, 89%, 0.56)", + "fill-opacity": 0.9, + "fill-outline-color": "#cfcdca" + } + }, + { + "id": "highway-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-minor-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#cfcdca", + "line-opacity": { + "stops": [ + [12, 0], + [12.5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [12, 0.5], + [13, 1], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "highway-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 17] + ] + } + } + }, + { + "id": "highway-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [7, 0], + [8, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [7, 0], + [8, 0.6], + [9, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-trunk-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "trunk"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [5, 0], + [6, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [5, 0], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 4, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ], + "layout": { + "line-cap": "butt", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": { + "stops": [ + [4, 0], + [5, 1] + ] + }, + "line-width": { + "base": 1.2, + "stops": [ + [4, 0], + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "highway-path", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "highway-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 12, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-minor", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!=", "brunnel", "tunnel"], + ["in", "class", "minor", "service", "track"] + ] + ], + "layout": { "line-cap": "round", "line-join": "round" }, + "paint": { + "line-color": "#fff", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [13.5, 0], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "highway-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [8, 0.5], + [20, 13] + ] + } + } + }, + { + "id": "highway-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["in", "class", "primary"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [8.5, 0], + [9, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "highway-trunk", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["!in", "brunnel", "bridge", "tunnel"], ["in", "class", "trunk"]] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "highway-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 5, + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "motorway"] + ] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "railway-transit", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-transit-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "transit"], ["!in", "brunnel", "tunnel"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway-service", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.77)", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [20, 1] + ] + } + } + }, + { + "id": "railway-service-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "class", "rail"], ["has", "service"]] + ], + "layout": { "visibility": "visible" }, + "paint": { + "line-color": "hsla(0, 0%, 73%, 0.68)", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 2], + [20, 6] + ] + } + } + }, + { + "id": "railway", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849345966.4436" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + [ + "all", + ["!has", "service"], + ["!in", "brunnel", "bridge", "tunnel"], + ["==", "class", "rail"] + ] + ], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "bridge-motorway-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-link-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [12, 1], + [13, 3], + [14, 4], + [20, 15] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-opacity": 1, + "line-width": { + "base": 1.2, + "stops": [ + [8, 1.5], + [20, 28] + ] + } + } + }, + { + "id": "bridge-trunk-primary-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "hsl(28, 76%, 67%)", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 26] + ] + } + } + }, + { + "id": "bridge-motorway-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#e9ac77", + "line-width": { + "base": 1.2, + "stops": [ + [5, 0.4], + [6, 0.6], + [7, 1.5], + [20, 22] + ] + } + } + }, + { + "id": "bridge-path-casing", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#f8f4f0", + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 18] + ] + } + } + }, + { + "id": "bridge-path", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["all", ["==", "brunnel", "bridge"], ["==", "class", "path"]] + ], + "paint": { + "line-color": "#cba", + "line-dasharray": [1.5, 0.75], + "line-width": { + "base": 1.2, + "stops": [ + [15, 1.2], + [20, 4] + ] + } + } + }, + { + "id": "bridge-motorway-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["==", "class", "motorway_link"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-link", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + [ + "in", + "class", + "primary_link", + "secondary_link", + "tertiary_link", + "trunk_link" + ] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [12.5, 0], + [13, 1.5], + [14, 2.5], + [20, 11.5] + ] + } + } + }, + { + "id": "bridge-secondary-tertiary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 20] + ] + } + } + }, + { + "id": "bridge-trunk-primary", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "trunk"] + ], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fea", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "bridge-motorway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "motorway"]], + "layout": { "line-join": "round" }, + "paint": { + "line-color": "#fc8", + "line-width": { + "base": 1.2, + "stops": [ + [6.5, 0], + [7, 0.5], + [20, 18] + ] + } + } + }, + { + "id": "bridge-railway", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-width": { + "base": 1.4, + "stops": [ + [14, 0.4], + [15, 0.75], + [20, 2] + ] + } + } + }, + { + "id": "bridge-railway-hatching", + "type": "line", + "metadata": { "mapbox:group": "1444849334699.1902" }, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "brunnel", "bridge"], ["==", "class", "rail"]], + "paint": { + "line-color": "#bbb", + "line-dasharray": [0.2, 8], + "line-width": { + "base": 1.4, + "stops": [ + [14.5, 0], + [15, 3], + [20, 8] + ] + } + } + }, + { + "id": "cablecar", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-width": { + "base": 1, + "stops": [ + [11, 1], + [19, 2.5] + ] + } + } + }, + { + "id": "cablecar-dash", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": ["==", "class", "cable_car"], + "layout": { "line-cap": "round", "visibility": "visible" }, + "paint": { + "line-color": "hsl(0, 0%, 70%)", + "line-dasharray": [2, 3], + "line-width": { + "base": 1, + "stops": [ + [11, 3], + [19, 5.5] + ] + } + } + }, + { + "id": "boundary-land-level-4", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + [">=", "admin_level", 4], + ["<=", "admin_level", 8], + ["!=", "maritime", 1] + ], + "layout": { "line-join": "round", "visibility": "visible" }, + "paint": { + "line-color": "#9e9cab", + "line-dasharray": [3, 1, 1, 1], + "line-width": { + "base": 1.4, + "stops": [ + [4, 0.4], + [5, 1], + [12, 3] + ] + } + } + }, + { + "id": "boundary-land-level-2", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": [ + "all", + ["==", "admin_level", 2], + ["!=", "maritime", 1], + ["!=", "disputed", 1] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "hsl(248, 7%, 66%)", + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-land-disputed", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["!=", "maritime", 1], ["==", "disputed", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "hsl(248, 7%, 70%)", + "line-dasharray": [1, 3], + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "boundary-water", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["all", ["in", "admin_level", 2, 4], ["==", "maritime", 1]], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(154, 189, 214, 1)", + "line-opacity": { + "stops": [ + [6, 0.6], + [10, 1] + ] + }, + "line-width": { + "base": 1, + "stops": [ + [0, 0.6], + [4, 1.4], + [5, 2], + [12, 8] + ] + } + } + }, + { + "id": "waterway-name", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "waterway", + "minzoom": 13, + "filter": ["all", ["==", "$type", "LineString"], ["has", "name"]], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14, + "visibility": "visible" + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "communes", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "communes", + "minzoom": 10, + "maxzoom": 24, + "layout": { "visibility": "visible" } + }, + { + "id": "departements", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "departements", + "layout": { "visibility": "visible" } + }, + { + "id": "regions", + "type": "line", + "source": "decoupage-administratif", + "source-layer": "regions", + "layout": { "visibility": "visible" } + }, + { + "id": "water-name-lakeline", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["==", "$type", "LineString"], + "layout": { + "symbol-placement": "line", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-ocean", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["==", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": 14 + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "water-name-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "water_name", + "filter": ["all", ["==", "$type", "Point"], ["!in", "class", "ocean"]], + "layout": { + "symbol-placement": "point", + "symbol-spacing": 350, + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Italic"], + "text-letter-spacing": 0.2, + "text-max-width": 5, + "text-rotation-alignment": "map", + "text-size": { + "stops": [ + [0, 10], + [6, 14] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#74aee9", + "text-halo-color": "rgba(255,255,255,0.7)", + "text-halo-width": 1.5 + } + }, + { + "id": "road_oneway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", 1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": 90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "road_oneway_opposite", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 15, + "filter": [ + "all", + ["==", "oneway", -1], + [ + "in", + "class", + "motorway", + "trunk", + "primary", + "secondary", + "tertiary", + "minor", + "service" + ] + ], + "layout": { + "icon-image": "oneway", + "icon-padding": 2, + "icon-rotate": -90, + "icon-rotation-alignment": "map", + "icon-size": { + "stops": [ + [15, 0.5], + [19, 1] + ] + }, + "symbol-placement": "line", + "symbol-spacing": 75, + "visibility": "visible" + }, + "paint": { "icon-opacity": 0.5 } + }, + { + "id": "highway-name-path", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15.5, + "filter": ["==", "class", "path"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "hsl(30, 23%, 62%)", + "text-halo-color": "#f8f4f0", + "text-halo-width": 0.5 + } + }, + { + "id": "highway-name-minor", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "minor", "service", "track"] + ], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1 + } + }, + { + "id": "highway-name-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 12.2, + "filter": ["in", "class", "primary", "secondary", "tertiary", "trunk"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "map", + "text-size": { + "base": 1, + "stops": [ + [13, 12], + [14, 13] + ] + } + }, + "paint": { + "text-color": "#765", + "text-halo-blur": 0.5, + "text-halo-width": 1 + } + }, + { + "id": "highway-shield", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 8, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["!in", "network", "us-interstate", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "road_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": {} + }, + { + "id": "highway-shield-us-interstate", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 7, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-interstate"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [7, "point"], + [7, "line"], + [8, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "highway-shield-us-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 9, + "filter": [ + "all", + ["<=", "ref_length", 6], + ["==", "$type", "LineString"], + ["in", "network", "us-highway", "us-state"] + ], + "layout": { + "icon-image": "{network}_{ref_length}", + "icon-rotation-alignment": "viewport", + "icon-size": 1, + "symbol-placement": { + "base": 1, + "stops": [ + [10, "point"], + [11, "line"] + ] + }, + "symbol-spacing": 200, + "text-field": "{ref}", + "text-font": ["Noto Sans Regular"], + "text-rotation-alignment": "viewport", + "text-size": 10 + }, + "paint": { "text-color": "rgba(0, 0, 0, 1)" } + }, + { + "id": "airport-label-major", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "aerodrome_label", + "minzoom": 10, + "filter": ["all", ["has", "iata"]], + "layout": { + "icon-image": "airport_11", + "icon-size": 1, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-3", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 16, + "filter": [ + "all", + ["==", "$type", "Point"], + [">=", "rank", 25], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-2", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 15, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 24], + [">=", "rank", 15], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-level-1", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 14, + "filter": [ + "all", + ["==", "$type", "Point"], + ["<=", "rank", 14], + ["has", "name"], + ["any", ["!has", "level"], ["==", "level", 0]] + ], + "layout": { + "icon-image": "{class}_11", + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-padding": 2, + "text-size": 12, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "poi-railway", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 13, + "filter": [ + "all", + ["==", "$type", "Point"], + ["has", "name"], + ["==", "class", "railway"], + ["==", "subclass", "station"] + ], + "layout": { + "icon-allow-overlap": false, + "icon-ignore-placement": false, + "icon-image": "{class}_11", + "icon-optional": false, + "text-allow-overlap": false, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-ignore-placement": false, + "text-max-width": 9, + "text-offset": [0, 0.6], + "text-optional": true, + "text-padding": 2, + "text-size": 12 + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 0.5, + "text-halo-color": "#ffffff", + "text-halo-width": 1 + } + }, + { + "id": "place-other", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "!in", + "class", + "city", + "town", + "village", + "country", + "continent" + ], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Bold"], + "text-letter-spacing": 0.1, + "text-max-width": 9, + "text-size": { + "base": 1.2, + "stops": [ + [12, 10], + [15, 14] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#633", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-village", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "village"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 12], + [15, 22] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-town", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["==", "class", "town"], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [10, 14], + [15, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["!=", "capital", 2], ["==", "class", "city"]], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-city-capital", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": ["all", ["==", "capital", 2], ["==", "class", "city"]], + "layout": { + "icon-image": "star_11", + "icon-size": 0.8, + "text-anchor": "left", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-offset": [0.4, 0], + "text-size": { + "base": 1.2, + "stops": [ + [7, 14], + [11, 24] + ] + }, + "visibility": "visible" + }, + "paint": { + "text-color": "#333", + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 1.2 + } + }, + { + "id": "place-country-other", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["!has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Italic"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-3", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + [">=", "rank", 3], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [3, 11], + [7, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-2", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 2], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [2, 11], + [5, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-country-1", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "filter": [ + "all", + ["==", "class", "country"], + ["==", "rank", 1], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": { + "stops": [ + [1, 11], + [4, 17] + ] + }, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + }, + { + "id": "place-continent", + "type": "symbol", + "metadata": { "mapbox:group": "1444849242106.713" }, + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 1, + "filter": ["==", "class", "continent"], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 6.25, + "text-size": 14, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#334", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.8)", + "text-halo-width": 2 + } + } +] diff --git a/app/javascript/components/shared/maplibre/styles/layers/vector.ts b/app/javascript/components/shared/maplibre/styles/layers/vector.ts deleted file mode 100644 index b96800c2c..000000000 --- a/app/javascript/components/shared/maplibre/styles/layers/vector.ts +++ /dev/null @@ -1,2844 +0,0 @@ -/* eslint-disable @typescript-eslint/no-explicit-any */ -import type { AnyLayer } from 'maplibre-gl'; - -const layers: AnyLayer[] = [ - { - id: 'background', - type: 'background', - minzoom: 0, - maxzoom: 24, - layout: { visibility: 'visible' }, - paint: { 'background-color': 'rgba(255, 246, 241, 1)' } - }, - { - id: 'landcover-glacier', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'subclass', 'glacier'], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': '#fff', - 'fill-opacity': { - base: 1, - stops: [ - [0, 0.9], - [10, 0.3] - ] - } - } - }, - { - id: 'landuse-residential', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['all', ['in', 'class', 'residential', 'suburb', 'neighbourhood']], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': { - base: 1, - stops: [ - [12, 'hsla(30, 19%, 90%, 0.4)'], - [16, 'hsla(30, 19%, 90%, 0.2)'] - ] - } - } - }, - { - id: 'landuse-commercial', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'commercial']], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'hsla(0, 60%, 87%, 0.23)' } - }, - { - id: 'landuse-industrial', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'industrial']], - paint: { 'fill-color': 'hsla(49, 100%, 88%, 0.34)' } - }, - { - id: 'landuse-cemetery', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'cemetery'], - paint: { 'fill-color': '#e0e4dd' } - }, - { - id: 'landuse-hospital', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'hospital'], - paint: { 'fill-color': '#fde' } - }, - { - id: 'landuse-school', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'school'], - paint: { 'fill-color': '#f0e8f8' } - }, - { - id: 'landuse-railway', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landuse', - filter: ['==', 'class', 'railway'], - paint: { 'fill-color': 'hsla(30, 19%, 90%, 0.4)' } - }, - { - id: 'landcover-wood', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'class', 'wood'], - paint: { - 'fill-antialias': { - base: 1, - stops: [ - [0, false], - [9, true] - ] - } as any, - 'fill-color': '#6a4', - 'fill-opacity': 0.1, - 'fill-outline-color': 'hsla(0, 0%, 0%, 0.03)' - } - }, - { - id: 'landcover-grass', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'class', 'grass'], - paint: { 'fill-color': '#d8e8c8', 'fill-opacity': 1 } - }, - { - id: 'landcover-grass-park', - type: 'fill', - metadata: { 'mapbox:group': '1444849388993.3071' }, - source: 'openmaptiles', - 'source-layer': 'park', - filter: ['==', 'class', 'public_park'], - paint: { 'fill-color': '#d8e8c8', 'fill-opacity': 0.8 } - }, - { - id: 'waterway_tunnel', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 14, - filter: [ - 'all', - ['in', 'class', 'river', 'stream', 'canal'], - ['==', 'brunnel', 'tunnel'] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-dasharray': [2, 4], - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-other', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - } - } - }, - { - id: 'waterway-other-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['!in', 'class', 'canal', 'river', 'stream'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 2] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-stream-canal', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - } - } - }, - { - id: 'waterway-stream-canal-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['in', 'class', 'canal', 'stream'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.3, - stops: [ - [13, 0.5], - [20, 6] - ] - }, - 'line-dasharray': [4, 3] - } - }, - { - id: 'waterway-river', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 0] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - } - } - }, - { - id: 'waterway-river-intermittent', - type: 'line', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'waterway', - filter: [ - 'all', - ['==', 'class', 'river'], - ['!=', 'brunnel', 'tunnel'], - ['==', 'intermittent', 1] - ], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#a0c8f0', - 'line-width': { - base: 1.2, - stops: [ - [10, 0.8], - [20, 6] - ] - }, - 'line-dasharray': [3, 2.5] - } - }, - { - id: 'water-offset', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - maxzoom: 8, - filter: ['==', '$type', 'Polygon'], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': '#a0c8f0', - 'fill-opacity': 1, - 'fill-translate': { - base: 1, - stops: [ - [6, [2, 0]], - [8, [0, 0]] - ] - } as any - } - }, - { - id: 'water', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - filter: ['all', ['!=', 'intermittent', 1]], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'hsl(210, 67%, 85%)' } - }, - { - id: 'water-intermittent', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - filter: ['all', ['==', 'intermittent', 1]], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'hsl(210, 67%, 85%)', 'fill-opacity': 0.7 } - }, - { - id: 'water-pattern', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'water', - filter: ['all'], - layout: { visibility: 'visible' }, - paint: { 'fill-pattern': 'wave', 'fill-translate': [0, 2.5] } - }, - { - id: 'landcover-ice-shelf', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['==', 'subclass', 'ice_shelf'], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': '#fff', - 'fill-opacity': { - base: 1, - stops: [ - [0, 0.9], - [10, 0.3] - ] - } - } - }, - { - id: 'landcover-sand', - type: 'fill', - metadata: { 'mapbox:group': '1444849382550.77' }, - source: 'openmaptiles', - 'source-layer': 'landcover', - filter: ['all', ['==', 'class', 'sand']], - layout: { visibility: 'visible' }, - paint: { 'fill-color': 'rgba(245, 238, 188, 1)', 'fill-opacity': 1 } - }, - { - id: 'building', - type: 'fill', - metadata: { 'mapbox:group': '1444849364238.8171' }, - source: 'openmaptiles', - 'source-layer': 'building', - layout: { visibility: 'none' }, - paint: { - 'fill-antialias': true, - 'fill-color': { - base: 1, - stops: [ - [15.5, '#f2eae2'], - [16, '#dfdbd7'] - ] - } - } - }, - { - id: 'building-top', - type: 'fill', - metadata: { 'mapbox:group': '1444849364238.8171' }, - source: 'openmaptiles', - 'source-layer': 'building', - layout: { visibility: 'none' }, - paint: { - 'fill-color': '#f2eae2', - 'fill-opacity': { - base: 1, - stops: [ - [13, 0], - [16, 1] - ] - }, - 'fill-outline-color': '#dfdbd7', - 'fill-translate': { - base: 1, - stops: [ - [14, [0, 0]], - [16, [-2, -2]] - ] - } as any - } - }, - { - id: 'tunnel-service-track-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#cfcdca', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [16, 4], - [20, 11] - ] - } - } - }, - { - id: 'tunnel-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [12, 0], - [12.5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [12, 0.5], - [13, 1], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'tunnel-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#e9ac77', - 'line-dasharray': [0.5, 0.25], - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'tunnel-path', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'path']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'tunnel-service-track', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'service', 'track'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-width': { - base: 1.2, - stops: [ - [15.5, 0], - [16, 2], - [20, 7.5] - ] - } - } - }, - { - id: 'tunnel-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'minor_road']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [13.5, 0], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'tunnel-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 10] - ] - } - } - }, - { - id: 'tunnel-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'tunnel'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fff4c6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#ffdaa6', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'tunnel-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849354174.1904' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'tunnel'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [2, 2], - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'ferry', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['in', 'class', 'ferry']], - layout: { 'line-join': 'round', visibility: 'none' }, - paint: { - 'line-color': 'rgba(108, 159, 182, 1)', - 'line-dasharray': [2, 2], - 'line-width': 1.1 - } - }, - { - id: 'aeroway-taxiway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'taxiway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 1, - 'line-width': { - base: 1.5, - stops: [ - [11, 2], - [17, 12] - ] - } - } - }, - { - id: 'aeroway-runway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 12, - filter: ['all', ['in', 'class', 'runway']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(153, 153, 153, 1)', - 'line-opacity': 1, - 'line-width': { - base: 1.5, - stops: [ - [11, 5], - [17, 55] - ] - } - } - }, - { - id: 'aeroway-area', - type: 'fill', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: [ - 'all', - ['==', '$type', 'Polygon'], - ['in', 'class', 'runway', 'taxiway'] - ], - layout: { visibility: 'visible' }, - paint: { - 'fill-color': 'rgba(255, 255, 255, 1)', - 'fill-opacity': { - base: 1, - stops: [ - [13, 0], - [14, 1] - ] - } - } - }, - { - id: 'aeroway-taxiway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'taxiway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 1] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 1], - [17, 10] - ] - } - } - }, - { - id: 'aeroway-runway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'aeroway', - minzoom: 4, - filter: ['all', ['in', 'class', 'runway'], ['==', '$type', 'LineString']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(255, 255, 255, 1)', - 'line-opacity': { - base: 1, - stops: [ - [11, 0], - [12, 1] - ] - }, - 'line-width': { - base: 1.5, - stops: [ - [11, 4], - [17, 50] - ] - } - } - }, - { - id: 'road_area_pier', - type: 'fill', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['==', 'class', 'pier']], - layout: { visibility: 'none' }, - paint: { 'fill-antialias': true, 'fill-color': '#f8f4f0' } - }, - { - id: 'road_pier', - type: 'line', - metadata: {}, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 0, - filter: ['all', ['==', '$type', 'LineString'], ['in', 'class', 'pier']], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'none' - }, - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1], - [17, 4] - ] - } - } - }, - { - id: 'highway-area', - type: 'fill', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', '$type', 'Polygon'], ['!in', 'class', 'pier']], - layout: { visibility: 'visible' }, - paint: { - 'fill-antialias': false, - 'fill-color': 'hsla(0, 0%, 89%, 0.56)', - 'fill-opacity': 0.9, - 'fill-outline-color': '#cfcdca' - } - }, - { - id: 'highway-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-minor-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#cfcdca', - 'line-opacity': { - stops: [ - [12, 0], - [12.5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [12, 0.5], - [13, 1], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'highway-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 17] - ] - } - } - }, - { - id: 'highway-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [7, 0], - [8, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [7, 0], - [8, 0.6], - [9, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-trunk-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'trunk'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [5, 0], - [6, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [5, 0], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 4, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ], - layout: { - 'line-cap': 'butt', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': { - stops: [ - [4, 0], - [5, 1] - ] - }, - 'line-width': { - base: 1.2, - stops: [ - [4, 0], - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'highway-path', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'highway-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 12, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-minor', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!=', 'brunnel', 'tunnel'], - ['in', 'class', 'minor', 'service', 'track'] - ] - ], - layout: { 'line-cap': 'round', 'line-join': 'round' }, - paint: { - 'line-color': '#fff', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [13.5, 0], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'highway-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [8, 0.5], - [20, 13] - ] - } - } - }, - { - id: 'highway-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['in', 'class', 'primary'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [8.5, 0], - [9, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'highway-trunk', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['!in', 'brunnel', 'bridge', 'tunnel'], ['in', 'class', 'trunk']] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'highway-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 5, - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'motorway'] - ] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'railway-transit', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-transit-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'transit'], ['!in', 'brunnel', 'tunnel']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway-service', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.77)', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [20, 1] - ] - } - } - }, - { - id: 'railway-service-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'class', 'rail'], ['has', 'service']] - ], - layout: { visibility: 'visible' }, - paint: { - 'line-color': 'hsla(0, 0%, 73%, 0.68)', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 2], - [20, 6] - ] - } - } - }, - { - id: 'railway', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849345966.4436' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - [ - 'all', - ['!has', 'service'], - ['!in', 'brunnel', 'bridge', 'tunnel'], - ['==', 'class', 'rail'] - ] - ], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'bridge-motorway-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-link-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [12, 1], - [13, 3], - [14, 4], - [20, 15] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-opacity': 1, - 'line-width': { - base: 1.2, - stops: [ - [8, 1.5], - [20, 28] - ] - } - } - }, - { - id: 'bridge-trunk-primary-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': 'hsl(28, 76%, 67%)', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 26] - ] - } - } - }, - { - id: 'bridge-motorway-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#e9ac77', - 'line-width': { - base: 1.2, - stops: [ - [5, 0.4], - [6, 0.6], - [7, 1.5], - [20, 22] - ] - } - } - }, - { - id: 'bridge-path-casing', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#f8f4f0', - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 18] - ] - } - } - }, - { - id: 'bridge-path', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'path']] - ], - paint: { - 'line-color': '#cba', - 'line-dasharray': [1.5, 0.75], - 'line-width': { - base: 1.2, - stops: [ - [15, 1.2], - [20, 4] - ] - } - } - }, - { - id: 'bridge-motorway-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['==', 'class', 'motorway_link'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-link', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - [ - 'in', - 'class', - 'primary_link', - 'secondary_link', - 'tertiary_link', - 'trunk_link' - ] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [12.5, 0], - [13, 1.5], - [14, 2.5], - [20, 11.5] - ] - } - } - }, - { - id: 'bridge-secondary-tertiary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'secondary', 'tertiary'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 20] - ] - } - } - }, - { - id: 'bridge-trunk-primary', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: [ - 'all', - ['==', 'brunnel', 'bridge'], - ['in', 'class', 'primary', 'trunk'] - ], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fea', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'bridge-motorway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'motorway']], - layout: { 'line-join': 'round' }, - paint: { - 'line-color': '#fc8', - 'line-width': { - base: 1.2, - stops: [ - [6.5, 0], - [7, 0.5], - [20, 18] - ] - } - } - }, - { - id: 'bridge-railway', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-width': { - base: 1.4, - stops: [ - [14, 0.4], - [15, 0.75], - [20, 2] - ] - } - } - }, - { - id: 'bridge-railway-hatching', - type: 'line', - metadata: { 'mapbox:group': '1444849334699.1902' }, - source: 'openmaptiles', - 'source-layer': 'transportation', - filter: ['all', ['==', 'brunnel', 'bridge'], ['==', 'class', 'rail']], - paint: { - 'line-color': '#bbb', - 'line-dasharray': [0.2, 8], - 'line-width': { - base: 1.4, - stops: [ - [14.5, 0], - [15, 3], - [20, 8] - ] - } - } - }, - { - id: 'cablecar', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-width': { - base: 1, - stops: [ - [11, 1], - [19, 2.5] - ] - } - } - }, - { - id: 'cablecar-dash', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 13, - filter: ['==', 'class', 'cable_car'], - layout: { 'line-cap': 'round', visibility: 'visible' }, - paint: { - 'line-color': 'hsl(0, 0%, 70%)', - 'line-dasharray': [2, 3], - 'line-width': { - base: 1, - stops: [ - [11, 3], - [19, 5.5] - ] - } - } - }, - { - id: 'boundary-land-level-4', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['>=', 'admin_level', 4], - ['<=', 'admin_level', 8], - ['!=', 'maritime', 1] - ], - layout: { 'line-join': 'round', visibility: 'visible' }, - paint: { - 'line-color': '#9e9cab', - 'line-dasharray': [3, 1, 1, 1], - 'line-width': { - base: 1.4, - stops: [ - [4, 0.4], - [5, 1], - [12, 3] - ] - } - } - }, - { - id: 'boundary-land-level-2', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: [ - 'all', - ['==', 'admin_level', 2], - ['!=', 'maritime', 1], - ['!=', 'disputed', 1] - ], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'hsl(248, 7%, 66%)', - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-land-disputed', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['!=', 'maritime', 1], ['==', 'disputed', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'hsl(248, 7%, 70%)', - 'line-dasharray': [1, 3], - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'boundary-water', - type: 'line', - source: 'openmaptiles', - 'source-layer': 'boundary', - filter: ['all', ['in', 'admin_level', 2, 4], ['==', 'maritime', 1]], - layout: { - 'line-cap': 'round', - 'line-join': 'round', - visibility: 'visible' - }, - paint: { - 'line-color': 'rgba(154, 189, 214, 1)', - 'line-opacity': { - stops: [ - [6, 0.6], - [10, 1] - ] - }, - 'line-width': { - base: 1, - stops: [ - [0, 0.6], - [4, 1.4], - [5, 2], - [12, 8] - ] - } - } - }, - { - id: 'waterway-name', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'waterway', - minzoom: 13, - filter: ['all', ['==', '$type', 'LineString'], ['has', 'name']], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14, - visibility: 'visible' - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'communes', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'communes', - minzoom: 10, - maxzoom: 24, - layout: { visibility: 'visible' } - }, - { - id: 'departements', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'departements', - layout: { visibility: 'visible' } - }, - { - id: 'regions', - type: 'line', - source: 'decoupage-administratif', - 'source-layer': 'regions', - layout: { visibility: 'visible' } - }, - { - id: 'water-name-lakeline', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['==', '$type', 'LineString'], - layout: { - 'symbol-placement': 'line', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-ocean', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['==', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': 14 - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'water-name-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'water_name', - filter: ['all', ['==', '$type', 'Point'], ['!in', 'class', 'ocean']], - layout: { - 'symbol-placement': 'point', - 'symbol-spacing': 350, - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Italic'], - 'text-letter-spacing': 0.2, - 'text-max-width': 5, - 'text-rotation-alignment': 'map', - 'text-size': { - stops: [ - [0, 10], - [6, 14] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#74aee9', - 'text-halo-color': 'rgba(255,255,255,0.7)', - 'text-halo-width': 1.5 - } - }, - { - id: 'road_oneway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', 1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': 90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'road_oneway_opposite', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation', - minzoom: 15, - filter: [ - 'all', - ['==', 'oneway', -1], - [ - 'in', - 'class', - 'motorway', - 'trunk', - 'primary', - 'secondary', - 'tertiary', - 'minor', - 'service' - ] - ], - layout: { - 'icon-image': 'oneway', - 'icon-padding': 2, - 'icon-rotate': -90, - 'icon-rotation-alignment': 'map', - 'icon-size': { - stops: [ - [15, 0.5], - [19, 1] - ] - }, - 'symbol-placement': 'line', - 'symbol-spacing': 75, - visibility: 'visible' - }, - paint: { 'icon-opacity': 0.5 } - }, - { - id: 'highway-name-path', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15.5, - filter: ['==', 'class', 'path'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': 'hsl(30, 23%, 62%)', - 'text-halo-color': '#f8f4f0', - 'text-halo-width': 0.5 - } - }, - { - id: 'highway-name-minor', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'LineString'], - ['in', 'class', 'minor', 'service', 'track'] - ], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': '#765', - 'text-halo-blur': 0.5, - 'text-halo-width': 1 - } - }, - { - id: 'highway-name-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 12.2, - filter: ['in', 'class', 'primary', 'secondary', 'tertiary', 'trunk'], - layout: { - 'symbol-placement': 'line', - 'text-field': '{name:latin} {name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'map', - 'text-size': { - base: 1, - stops: [ - [13, 12], - [14, 13] - ] - } - }, - paint: { - 'text-color': '#765', - 'text-halo-blur': 0.5, - 'text-halo-width': 1 - } - }, - { - id: 'highway-shield', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 8, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['!in', 'network', 'us-interstate', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': 'road_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: {} - }, - { - id: 'highway-shield-us-interstate', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 7, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-interstate'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [7, 'point'], - [7, 'line'], - [8, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'highway-shield-us-other', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'transportation_name', - minzoom: 9, - filter: [ - 'all', - ['<=', 'ref_length', 6], - ['==', '$type', 'LineString'], - ['in', 'network', 'us-highway', 'us-state'] - ], - layout: { - 'icon-image': '{network}_{ref_length}', - 'icon-rotation-alignment': 'viewport', - 'icon-size': 1, - 'symbol-placement': { - base: 1, - stops: [ - [10, 'point'], - [11, 'line'] - ] - } as any, - 'symbol-spacing': 200, - 'text-field': '{ref}', - 'text-font': ['Noto Sans Regular'], - 'text-rotation-alignment': 'viewport', - 'text-size': 10 - }, - paint: { 'text-color': 'rgba(0, 0, 0, 1)' } - }, - { - id: 'airport-label-major', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'aerodrome_label', - minzoom: 10, - filter: ['all', ['has', 'iata']], - layout: { - 'icon-image': 'airport_11', - 'icon-size': 1, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-3', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 16, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['>=', 'rank', 25], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-2', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 15, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 24], - ['>=', 'rank', 15], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-level-1', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 14, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['<=', 'rank', 14], - ['has', 'name'], - ['any', ['!has', 'level'], ['==', 'level', 0]] - ], - layout: { - 'icon-image': '{class}_11', - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-padding': 2, - 'text-size': 12, - visibility: 'visible' - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'poi-railway', - type: 'symbol', - source: 'openmaptiles', - 'source-layer': 'poi', - minzoom: 13, - filter: [ - 'all', - ['==', '$type', 'Point'], - ['has', 'name'], - ['==', 'class', 'railway'], - ['==', 'subclass', 'station'] - ], - layout: { - 'icon-allow-overlap': false, - 'icon-ignore-placement': false, - 'icon-image': '{class}_11', - 'icon-optional': false, - 'text-allow-overlap': false, - 'text-anchor': 'top', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-ignore-placement': false, - 'text-max-width': 9, - 'text-offset': [0, 0.6], - 'text-optional': true, - 'text-padding': 2, - 'text-size': 12 - }, - paint: { - 'text-color': '#666', - 'text-halo-blur': 0.5, - 'text-halo-color': '#ffffff', - 'text-halo-width': 1 - } - }, - { - id: 'place-other', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['!in', 'class', 'city', 'town', 'village', 'country', 'continent'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Bold'], - 'text-letter-spacing': 0.1, - 'text-max-width': 9, - 'text-size': { - base: 1.2, - stops: [ - [12, 10], - [15, 14] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#633', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-village', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'village'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 12], - [15, 22] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-town', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['==', 'class', 'town'], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [10, 14], - [15, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['!=', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-city-capital', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: ['all', ['==', 'capital', 2], ['==', 'class', 'city']], - layout: { - 'icon-image': 'star_11', - 'icon-size': 0.8, - 'text-anchor': 'left', - 'text-field': '{name:latin}\n{name:nonlatin}', - 'text-font': ['Noto Sans Regular'], - 'text-max-width': 8, - 'text-offset': [0.4, 0], - 'text-size': { - base: 1.2, - stops: [ - [7, 14], - [11, 24] - ] - }, - visibility: 'visible' - }, - paint: { - 'text-color': '#333', - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 1.2 - } - }, - { - id: 'place-country-other', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['!has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Italic'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-3', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['>=', 'rank', 3], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [3, 11], - [7, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-2', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 2], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [2, 11], - [5, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-country-1', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - filter: [ - 'all', - ['==', 'class', 'country'], - ['==', 'rank', 1], - ['has', 'iso_a2'] - ], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': { - stops: [ - [1, 11], - [4, 17] - ] - }, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - }, - { - id: 'place-continent', - type: 'symbol', - metadata: { 'mapbox:group': '1444849242106.713' }, - source: 'openmaptiles', - 'source-layer': 'place', - maxzoom: 1, - filter: ['==', 'class', 'continent'], - layout: { - 'text-field': '{name:latin}', - 'text-font': ['Noto Sans Bold'], - 'text-max-width': 6.25, - 'text-size': 14, - 'text-transform': 'uppercase', - visibility: 'visible' - }, - paint: { - 'text-color': '#334', - 'text-halo-blur': 1, - 'text-halo-color': 'rgba(255,255,255,0.8)', - 'text-halo-width': 2 - } - } -]; - -export default layers; diff --git a/app/javascript/entrypoints/main.css b/app/javascript/entrypoints/main.css index c6e48839d..aa49669eb 100644 --- a/app/javascript/entrypoints/main.css +++ b/app/javascript/entrypoints/main.css @@ -40,3 +40,4 @@ @import '@gouvfr/dsfr/dist/component/accordion/accordion.css'; @import '@gouvfr/dsfr/dist/component/tab/tab.css'; @import '@gouvfr/dsfr/dist/component/tooltip/tooltip.css'; +@import '@gouvfr/dsfr/dist/component/range/range.css'; diff --git a/bun.lockb b/bun.lockb index 6b65bcae7f9362d7a71b4a9ef707899f99581504..cca1141dfbf3af4ea8019ba9a2a4f7c20e27a5d1 100755 GIT binary patch delta 114418 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

45+@N$ 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­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 delta 110735 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%0A$n7!%y+LMls7F6*X5u@{%*FSIre8mgaS!AC zd8E-;gE0_&+=2CpoN0QHncL5!pELbl_UQG^XnaSTnJ;^ct(Y=FNaSPY_jena821gV z0+JR6xj>$kQT^O{Ni(y*M;~P7_V+kfVK_H319}G=Un9gcXj4D8Q4$L<8}B0mpJ9yy zJjMn{Ev*s*zYlVOJXesq3C1w1c9?;Kka(cSSOz7;iqDC08|T1UgB3G#(3&H1Qz|M4-`2*cX1lUVp@FI-cVETo7^ebj`xX0NNOHnuT zO8;Q}4Kp{~W1I(<{y;vxrWqaKajwNi`D8#wt)D zI%*GCGb<%LrQb1gBRxh7oZp*6(@Z!)Pcfst9(|vg>Ge2#o;35kAw~jwNpGM~5UM?d5OA*`ZYvxC~jW{qm5Tgb@$^>I-hc!m-fpPqUMY)YmHH-T1 zbuf-ptBZ_1U@WD$<;~KyWGPOI^#`Lp#Z5Y9HW)4TF_XgG`Vlia&SR8*%5ER(alQoB zl3i@fM@ZHY*vD;rP8~TdOZA3kX1qsFFmvNQ#+s*PNBCNH-UDMUUo$Dptv5C^6Ff#T zmgB}&-kkn!*K)9MutJ|aj&)x8gmdG0FzMB#%a}=t9;0<#IXuyZD7PySj5Ua`Z4S$) zST8b@JjT=5A3e}984d=yKv)Q}U_@^O3kEA;IrbVDU1C^W;O{5RmqRfTOm<&Vlw03# zMyGfT!(VDHYgyQ=m~`k}FuJ9fZUZsEGHT}z}h0QWug9v={MYSe{n{q09h|=f&*VuOxm;qOqqeHR$zum3ekgn zv3PVc1NsFUuOP(f31d;hdx~K|MY^4OLv){crC+eC2}3m7cD>6Bg|o0w*$jo&7Id%k z4wN9);%tjWrnLx&(p#FjqddkjP&ylHVvO5WB2bP3YqPQDN^2;pqhR{|9rY^WWS8a- z4|0L1#R60GS2J_8M{jQCj`kR7FjuaSNfALV5H`|aefl3}<`|DN5Zh3YncXYc7=aMG z67vQ#a|4*1ix|hQTZ$DlQx7(C$9jx6Fc6ss9rY>pv2h-wdQ&;@FbXl>`hv;fl#lr~ z!}Lq{I1fT=Y1LR7gP!h0+GxyvFgS#B8bkIQFphHFS{W+1ZN}mJ0vJp6;nJs1GIKMq z6hlK6Sb`N*f6|N|?{U6@8GyMQ8LZDYbH{s(tKb|8SW&PBH-yLJ`ocBXR17NvR-4mc zY?sb;!l;DGXp3fI{u*7uSi9U@CL>6z5r@@tlbJiwgPAPtqJ;pE$gu+&=0F&*-8gHBfV|%S*gx<;Yo8mD( z!qPItE>W*yW=`?wp=RzBk81%cV(P-Naomia>M@G9vCGVf4e|wPYb~oY5n@MSc4C+v zP)r(n4~#`wu5~uXH0oex4-7U&B1EV7n1P=J`C9Uow_CapP{Ric_kebAqZzlfr3(SJ z44WU?QVg!;1hx9d=mI9=xF)?0#`z#C{|2nk2jy`BDU5sNK9&WB#H!3+3*sq@;KyHd{4VPLe**YbO|V%RS+N3WW>rbmCy^qb`|)^?F+ zAN0>~w{Z`QHDk-TirsFON6#?*W_yhFUGc9YpgXJ?_yZV6FjDn$I~%}+4%T2wMTi3f z_RMhW@0-zcJjQisYFJ`x=Be`{n8SCK$_?^S$;mEfgjp~ada9%Wd+vp^4-;ZC^+-H0)?~DX$Hcgg<$l*Q{<4QE zhP9wSSPxl}HCmmm!K|5$<7Vc3kMS+Isukrl>8Z*war!diz~D+=A7o%-18Xa?$LcLz zy=-q_C3Cd^<9M>?s=;X0y;$0|D&`RRb@ZU(VAfJ(?{te>?EdD|tIV@zVrC@SlVxAwtELX5REGoGRJ$jPqx5#7c=_~8D_I&4GV6DyU ztJpRX_iCu^Zcgy^V00h`A)Nmsm^GJdo1HECS@R5C{whLhGT|8YDH!wFu5cN@LTL;I z&X0HNHO$;49_LFhqdaR#eH$U#Dwq8OU|hv8@NiDTL3*jj)u_K5vIQkN2SCB*+9%kU zg^-+(NjovjmwAjT1MF7hjBy*iz?5y6%yU&7T95O`F|bD503KA2byey+5SClsZj6w$ zD=ETlB!jiIT9m)cZL9^O4e~&J2Taw73EI`nUFp%S!L6HS^eT_@>?>Bw`v*I#4YItC zzI+9tXJxA~0B3^9@_5vJpbrjUi+Ye}jAO`)a{#?*VuKwl?X-OR;F56Z&|9UFC)F8X z>_41JQHu+c7S^{oY4^gv+H(mL3Bp%S)PS zUoI~+{jxnq+XxMhNAb3inLpNTi~{4BK`tC{)|k239%ml37Uq?e!NzluvRzn|=evyz zFzLPgMQ$A0bJu#D#k`u<#JsXF*l3QB)pH_02nzui_7#*HIN5FN0Ba3qjW(mqkb*4+ zbEr3%$4bdM7J@M)md#ae{RcDm1CP;hsNA~ci9H*PR)FCUbPkMtD9`rQqvV*7$CNlQ z&VPByz5(da|%dbk~3zk;n0F*vRhW&e#+gWWi>@l;WgB{+{ zX4du)$Li5$-u4jV4)k^fM)VzH#_R}jt{8(I$&C9X*imP!nYSavNE|Ciojl{@fN?^h zZCEs~fwi(&{#v&YFiv(SQYK-~1>AyF`F=c`ovp2-KcLJJcX73JmjF@QVLH}%`>Ax?;QSUV~W?zW$#%pq!gMB#1daWXbj@D0cJNtvRF|+pvJKsa-IrGZ)U`Lh7 zX4ZiaBLYL6Q_gae@<>*Cj$KO*;|3e|pXWz8ejP1e3JcM4bstbJIZTt+z(~j(ij&Iqc z3SM-qc*~4A9Ae}_R6}%`+u30n4}R?Px2Bo?M?#DrAryGS`PAEVL)^Y#XN(o%NXmKJ z^#44>S@In=JmB+S=ZgrnGvoFKJ7&IP=6xRG_~jj|(Y2?WF-JojY17Rt!20QC-q8@_ z`gFN8V0>bRG@4d!K>j)yp+W|?__ zJ+n;zFG7rBv*n_X7B6xeUBI|KfQ7o9E6L1&-NDACLLK9?(HuGYkqXPf-2w7{keZn(NtCYA~gOfn1_v{TRaJJiM55^j- zTP#L8SO^%_BuwT{z^oNf|!s2wMMGK#c{rhw{~uMDsgya*M^Z$Gw$nU=5HTI|5D&O;^fQ z-8z6cmy($QF~P=dgxDSE9HeTn%02*bD@z5VqhSHq4ls7Ob#ylFfYCL$`Wud`pVhMF zg6-ZJ52Zd2=&tz)acD?S)VOQ-LTDxeVsHtSS;S?=OJFULP&(r+u)-0%PsPc`II?7Q z)_K6$3=9isWU%v9gz%iASFrPAY9j2IPZR4H?^+|R#Q>VbdJs)SCm)^Hqk6CT31fy~C*5{94Y&{NxThMRWa*@GJ;685WAh00oka`IrjsaYq zVx@{&Yv%nLV(edQw~_}cpLMbzxENdFa4^n5t23Od!IF7KF)Du`E5L<)w%hr5j;0M@ zdmW2&O#l24$4@zCOn!*rSufAe=>G9;$ME%L9>mQMIg0Ra8E3g2f2}uTu7^0?8#vy1 zJL_G9I#@NL$ z+gdQ(5>u;E3hm1Q(1+EOrid!Vgsp(*b9S6?@IBze60q z?KSiM4skZ$XSEWmZz@7G4<{Ku=mC>m9T*X$@1LEghd5r|FZ^{q#K_t&R{|`3*h2dq z5Lr;2A0DtazgfY?4TM;dbq~a7b^v z!T~rY$OYm-LPULbf0Wz!>AtvHhvXsXK`DnJj{WwJiD7vgge(b&;=dVSnp*ufm%eIfiy zqVlItsN;m0bOsCC36Vwh5LB+n)|IKV_?Om1#nkGK(94#NbGGXnu$RCJE-hVtC*@Eo zG}`#e9;R@St0x%UUl8wH2&JuvtB#q6P)jooOLCR3?NcN7+Hf%Ga!%*>z~}^dT=^2L zowNrntZ+)xx=V(XQDE(@lw8TO6+>6y=G1jC>v^fe{f)>ggXxg`jkUmFr`mx~7nu*^ z`jKyK#>>M{us$*lE9zRXP>b=fSL{1$VHzE5bVJBmx~#6r1Z!Jh$0acO3@d89+Zp`5 zwQ^&%i9?9CV|zlapMr4$VF=^46{_wB1|ibmua#Ugni0!Nx6wq|NkEyB~_K z^s~W&P?j78N5I$u$(}l6Z$2C$qwixUz*weCS^ccETe1YO!cz8v4Jb%i^PF8f%S-_) zOnDHju*_;d+C9sgI-y|njI3cbnB1*c${n!6QeOJ0Xxvh;!noUDT<&ElU4FL5D@$1k zR#3a+`p+V!5_*33c`R`vu96!<_T#%0_!64;G9+Uiha)EMi~o6pm$|3s& zOwN{^<8Gtcby+u@@R{2=1PsqKVbjzb*xZq)qIKtP`ERm3xq)5-3qTy+lEO7_)0^@z zV$EbD8H|pT&iNFq5tz*PE0~(6*qZA6E}bgZ*0Y-pUkcV!|Mdt-pYs0rJutdK7SidK z+y}5npr2-d1tShS(wA=I0vH>Lr3W`3{chWv1MgqOfpP!9b_JFV*1$?h*M0}a4#053 zB&zg>998nn^8#29;;_5oY34*QJOP{Mxj;B(aGl)G?V1I~(Q3Ix3=Y$c;!rr=3N|65#$VFq zCCq$WpAQ6My!4L%qrKMsJ>w`CTZZn%GF$mBQd-?R2qD=qFwSS?T}@mHKwIMf#=0)9 z1Yo837{M+w=+bmM*sCzOxG;Db!RKY#X1cC*lEHC>!F`3n(vE@zeXL+W6YPwI;xC24 z20jHzha=cQ8CDo{_!g+03WIMW_?(DqthdyCMOI_oqdP^O1pg+w$Jfbdw$YJ~h$dJd zXBXGC{^Cj#H2WHY{baDSt3X|jU{4X}hNTD%l<~a`U5l2%PY?`~!D=N65{yRBE7h|I z4iZC;f$&6?HXg0x?qkA61D9?)VIb!m)=l8dlA@U^Lb`Vi{k7b+8z(WvZ0b z`Q&h5uwy`35z`W;FNA{EPq6fSi%>T!B`@j%A48MCuzI7;VPKYltWzwmuNy8XtW(bU zZ&Yer+?{dzlq;v3!&bF2I+ueBkOq%0a76nUjOEKl)|h9w9+!n$6W-Mtj0F}>w~AinNa9)IZ59KqgO41jEi8>HE6J-!4ty2 z4IDD|3HD%IXt1##A;w!5_C~1+m=y&j^#%*H7_Zu1uOMRDV*TF+m8&<($6oPk1(8R! zc12mMR?FdFG#CAfoBF%Jb9Z6yVa z&BQSWd+s(c_B+*z;yUdayIN8eC%?9LFQXPO@xq?gUG=7Ud?@G2NkCL){nw zrq)B0vk|NXb33k97kQmebRt1h?P>TfLTSo^_?^OajB;$CW`gLUaO}G0JUR1f#hy9`}Ii zJSF_Qz_GZjNu;equRV6v+?c}hR6TMrfS1PZ&(3t$}hC=J`jJTSR! z@bc;k7~O}x3s(WnYRfq5ML$;}m^CBp3pK~;+9InPEOFM6<-=NZS#z+LP=@TlsbB*v zE0dCgTp%xkSmVk0Y+YUJZ3f(Ksn-?$FQJ^@A#}IWqD795_2fVrQ%~B21q7Y-9auN( zc;M$Jb=<1LJ8%;eE10j&T~OrBn^OMlVBFICFCE+wF`ZE(EXRZH>0sP+aj3wHxp)0V zOix%<@KU0+Z2XsNK}X|fgnuujoA^wD_2{K9pRsZ~jQS#vu?YbMQwdK5&jpB>-WX^Z zjYJmE__mQfw>i*i1WHe1jNq0>D41OBam(B}2dtNMd)v3M^sF_Hjlp1Ybzlkmz}OP& z>e2B+6A{x-_qfW-Q-CEpC*hwn%KPNo5t3OsZVTSw7D-caKk8WwP##a6T@k`og7*vr zLL4%v7`K#;gW--j?$nfNY8wg@oL#|i!bZ+{2(>q}ad-U(gmC)}_Y5mGv)#e8@nlvR zdl2HmQC{{w>Mm#^)`?iKLOa)k@jM7CehqSggi3;hy@FKhMPL^l4`4v?LK5!nUPcJ- zdJYeEKHc1IO*}%pkU}|lK5>FNm_sC`;hF*evXVm?aaftggK_c3@W505-C**vn~!f? z!S)))_B;oM3s$sqE<$Sk!sYl`FuYX;U)5+S+k(4V@Zk_J+;g51>|BiyQow5$5qg%} zG+rU(vcS?p5t41@4TGg%(sI=4_`Q|L3d2z9f`5#uwh0mB3xbQG`N7Vg5kfcNs=by+ zx>&9ocu`u76n6fO0v32I$kAFiFZFNbe7UvGTePTuGeXkMf#ZYpHo`v=6%K17XFt|3 zTmmj?BeJM|549DXRfacej7n{#>)=RiB>lnI$v6dLo~>#tvb@M~Nu`mu=L6c=&gMzE zU{G2M@%?T{KuWo^^HShn{yBlM0VzGQI}f;x>tM=JsX?yi3Pu|Cnfoi4g*Y|1&{vni zdWq~Qc=FI*^{q(ijG0p4;3?2KPIM9231jGS`)VW*6Z8Ite1?>2?7{i}W_q;__R5*R z!R<^3!ezQTWGVk@4>&Vt~$sPDpDVAa^6gQHkz&HORNK zHN0>h{5J#oGnLh6*n^w`Ob*UN1);wY>S@M}4>o!{Uog4Df{KH1%og5Tyj~E^d30Z= zIIT`GvoE&1Z?Q6h{?EFHQ>@5{zrS6bUa-d^j~j1*sWI`f+j$V|1@p=P9DTajuFM%2 zGAWjX%F?dz7AR#9FeHJ+jTJA{fA+knc z>Tg79T7)CXpdeS#{&D_^C@hUw!CLjSmLV*j_c__9b6-{OB2}R?Z-51%VC$y1^O;_B zK3zTsA)bMBYwEhdWcTt6)S|at0-y8E1hZBbk>l0f##f+hr1dz?=+?(RkMhae+Xaj> zeGgdSn0cyi!JY|!3Lw4(wSZD>(hQwnE`au0V16zKj_x7cPX@-SR4A0vOL1^1=QNFnUbh_Nd-p z&U&Q8ZIAh2c#wrXPL) zPeI-Rr=74Go7oAK7SF%%x^ty)+#j$WN~R*jRn^js17Pd`tg%Stim(<;4BnOq$+Fnn z8DMHgBh@~zX4d)OFN9?CxM2oG+TFk@nF_`dtUE=Qm&!vAgL_!%lE32eRQc0|XBEU1qCF(Qw#<%j9&*-2o& z+YvfU#Jq#ptYIPx=*&l~_0NACezC%TI?|7hwYxDN9rQw+eX|2+amVO5k%u&n58{OX z4B&-05kvHk7g@x^@gk2{IYIc(#KW!e334r!n_rC+hMpj@5MexI&@;ook@TZzKo zgfW+)wiE#~F;VIz$qgTOiTAl3Ba%cO6Zj;Ma(QzQ7)xu75GPd&OuOG zSc#nT5F8?de_ku& z;?zfA1c(5E`(g;Sl}RTf7%7973RI)nNPGVCu}~CPh)lB*!ND@vY7{Gpn~&lUdRdBB z5tPLl6JM2M9BVMn+Mj?m!(46Yi@+-)ZVs}I#+b3P8G=C!4O~3p*m4@IkBFOxBxCI6 z8A}l4v@I_1r*qs!*h8PC`TEw8Usn zmuoY+I^6B-0oF%kzl-A|Lxm+b$&kZdl{^uYhAVmylnXpoN*uE9W{A9nsHn|&xg_Ep zRm}E@V5}DJui~=t6R>t*SjcfQ)F$9QB8!u+;DYrB!-9=1ZWkD*4}646Q=f?j=&%Npbgj90 zB`MgLh7eQXP5~}wegcz+fSmqrAHUai^O=}d&al@xws>F4vEp@+wM=hOc8F%ZF|9d( zQTWwG`Q>_bQGdBkmulKD{PI&2eZdp(%REW=<>%j!=~D1ZOv5ifMbQU*q@~`6jjar? zs)(Za6to5SrGX0-E&>)4rmw$u(5qYi+z-kRk$yZxf)A1WC<#8q;`sfF z1Ro;p_?iTt{{(5@xA>) zMx1f1ggCrdh?9%;A<_^WJS@bC!uk|NPP4Jl>9`CPUlb`}BeTlIHf1699jm-ax>%Z} z*Rn>#6eh%{DAKlR&{_6$m3M|pR}^WZsdOTPvlPx&I+4LS_@cAsD;+4;C<@fxRS6aW zS@04d4OkAOL771OXj%AT{QD&T4RR{3SLrtZnSZlNUx=um7JZBeX4s_?6h%tA@kK-S zsrUyWqxP$KBFjCbIFSY)QM>>}=l3xs5u<&sqKFJ0#TTpmLh%y{zXY=AQ$T)*BLn|qWCdkZ1x1ll{t4*5;%>HHK|HcncUfQ7w0KfwD2kM- zDxJt+b$qdc8cHXU*95ZVwUtg}h4mFDGF^be21*A$W<@kq0?{cJtW`&yrYe0iAbYU6 z;w^yu6h+3jQaX{mwMyRx$U)x`h###pzy2F!Pjqu&x-!j6Dj|`<9{6HIdMcgBU~i@O zQTl_B4jHJ@4^rs|1L?R(APtNG@)P60Ora$SDq*6EAhKmCiW6y2Dv;?%DZMB%{TQVa zSz!i{`Nk`ppyCUVe^;}ZX!QZ+1d?e}RXmaT-ca}^ko8UnvK~|EvlPx&I0wiNk?H0s zeZJxg6fOqxQv}obcR{sJ5kbRu0cpT)AU$>vh#&2c(hn>CIYoSkOn($eL%&q~B#^tx zX&@)}FF^cg7xBe<_@|ti?+SZ@7GF~dt}FaaCAg{ZcZIir?CN_!R!|I?ncu)y31B%O z4XFrZ1(kqoNOd5xXf=WO(VoT^kLeB55nzI*Kqhbl@uRiC7Yp(zy^YeJQ#$`hHCxhE z#lNWHdjMG;|7tez6%{`i$b&@!kmaTVxs0WcM}RGv3Z%tv0BOiuK(=U(;&Xwl@I4?4 zUaI2XSNIW-uHFu0!H0oN_l3e!KpJoX$ntX~PuFfEzzj~5{s^!vkQJ53S4Cie;(#(3cx`3<4}T&Ju7*s1l3-vY=5w zRy0oW3?S1_1oA_y3(Nx2unj;~ycNiFp8#3TcBStFJ`VmZ<2nCMBY+?69KM+GB9IyQ zx8KVG{{(Wd6oVDi`M2TesmForI{xRBju^DeFf7%n}Nb1szZcKU48V zkp&!9I+5v*C{C;Z{xgtw}gk#778I$Lp9#S?k=pbYwq-Buo7jDG^iaw<`jDE(bTuo6^3 z0;Z{jFIG?o$c%nK7Ua)Jg&c^@RJs-_T`M5n-3!PD^jGnNfcz99>Sw{>h@kO9fvg}( zB_z^-Sf$4SOM{PAdODE#Cn%hxa0-xfe+H1{%>>erc|iPVi}1ynvz7%g!8#x-+MsX~ z5I@={_+kY+fK0cOqC(E~gDUihwORO)^_EB@_^F0LXF%0hw;F!Z08|M8-z~*|3=6Y7L8lz>Rc-N=Re@ zBNdKP`u`2GyjN8@1(*(jV~xm`j0e)f*MQ703CJ#*s&E>RA0pFDSDeWFGl6W`T*c=D znSUXW>6ZXm?ox&6%T!>w!W9ZvDqN*-wZcq=Sqj$xS@2rL*D1ap$PbYfZUEB2jf#IH zFbF$BKY$!V z_ke7<&c*H@NZnWIMDpT5Yfm#&1d$Ps04o7&1D^l}t9T*}ZKcqobRrFEt$0zS-bTf@ zRoD(lk92gYtI5tP<9~uI@OhQ~-;joOQ5AMo>50tW4aoSHT<|}I?hx4WUMeAx3HksT z-&g5Gx_SVRr@o;;Zl2>*{Qohg|4%dif0Qqs7IX7^M-}-07}NiwiaA(J7|5=erEs<~ zm`Ht&LZNgb^SujXmn~NM{fPcADsT)eLqZm~9LO=SQsHV_}?H6*@z6pO+XsDl?5my{{)(CvVJQ-;Wz|Va6%<4 zij4mfdL1DDt8RXX+-!JAVZ6>}D`Yu7ivJ5*_5UXctqOcqfkam51hS&yN+(ixDKr$8 zQ1L{@mju!yr47_ip^QrKAY}ZbDxS!U@Pc zzG&|OIhmFKS>I9vBZz@z5cnaIFISvM2doA%W44N4tKx}FzfR!?N+(j!0n&gCihro$ z3lTlYF}PJF*rpN?sqX}`;(b82^q|7SKvr->@nZ^40BP{oihm2F0pBbAtiqoaUbK7g zq7p6x`604`D++&AI+6NSphKMAgB~RPL&4Dvf z?+5ZjWIgEz5n#s8lyF!jD2g=XD0CKh0$3M#2gnxw4P?9nt3P>hAk&ouQZKFeV~Upt z)_~qr@^mc-0b0@mNJD~Ugcbtihsc83D0~jcbnStxs56isBK7BiEUycY`Ce4mLt$?q z^Yyb3{XbAe34$q#V0793}hdVRQebo%NeII14zTh1L>jH6`u_B zMg7{F2(W+|3WdT2Ko+zJ$PbYPEmoXJz68j0%YYnY>s0)Mkm+(%zV$%XuQ6aFTeuON zF505-6BS<+S@EYzCz5XmGXE}xdzHQq$Pba}_A5M4QmbV}AW(p;_%Jvv{hTOT9n|Y~ zXTC30zLP3Bk@cNY{6WZKzE$z}p%{BmJx2Kf(Ojl}QOSs`?gEh6a~021@ee|F>{Y}Q ze*@xjNc$5=^X{p94?xTPRsuHLf!<>VCy?A=Z~lkK0aOO*SyyG1zZ#I`)l}sWX*+0gnb9g*|0SVAl~q_&qXh-PtJfh_Jt zAhY#Qycdwo4F&Q;Bp;wSk@;Q$vYC-UmgiMC1juF$Q#=;P4^TXLST{tK!+5)lCB&;3 zB6%W^B@PF21dLO929O^jYZ|XOk$i&UM3(a!kdA)`NK0lZoCo9wD0`X$3z!dN#`jc$ zqDXzAO1DVG|4)$hEJl91a`_{{__hLt$QHk^DzK5UL)0$~iNf#0cl6|VefW+Z2LpZ| zzM}^(aCSU=M-OLqjtG1nzN4oc@t}A1xCTFbM-NVT_>SJgck~{4*otn+Ms_c`fzu9X&XT7flb}(W?kIaL7D-NAKY~dJo^xd-#st!*}$s81h{`d5h`c zJ9-b_(W{Ol6Yo#d2pUPaeKU@l<-b;yx=f(afiz4 z364_fYiB0A<392WZ&+o~-V14847poL{Qh3@lH>W8(q_(itBdDM{il;Q4yrY1f0HK7 zf^+)BuW0N(vbWsC{p*tgmOneld#OlG_8((n1AW&XpECFN)QDP_a&}F*^>}XI&tgX` zZP}}2M7{dQN)NbR`p#6Jy`T5rUar!>*BUh~H}HBHV@Tq!*Vnb*b~oW{%8tIyfmKA; ziH?dQd%WWXU5G!%JNgROYiPm12@vLq%n1-SQz(Td>FI7eabn-JQ+0b!k(@dkuWZ$Y?8AxE@% z6T)o@E8c{#LF7|dJq<$dw;*g3OWuMI`ZfgTGzgnS_h}GZ??Bi{VT;h;hOn7}_iYH< zL=J_h=@81l1K|@9_6~%KGa&4xuw9g$4&eZWwCNCbik%cj&V*2V287)rX$FLPCWMm| z_KKP_A)KNxX(ojI;y8sVvmi7zAsiIrO$b4=A)KdhNCeJ;aFN37SrCqha}?&zfzW<7 zgrj1{YzUnMgqswOi#Bs0+@`Q%4ulgTpTg?75PAy;C&dy0A#@%D=UfP1i|%tFxaLFH zNZ}iy&x5d;f_EN-??euTsCOZhpAX@*2%8U~;(HMGQaB^Zz6;?1g|v4eoD(}Kj9dVr z_InV15=rktsJ9TpNebsh%>@unQJAyoXa5G65W?UaIJu_k-{HBUk+h21@CeQe~KImQ7a*oUjgB+2wMT6;wlJxDf}(U zu7q%aLfT5K8oER5T8UL-SaPX2?hU!Q_a=Lbc({H)ewq{;}oW3 zL1>x@!4Ts!Aq1^~aGpX*5ts$xB8Aym5K4)26z0AUq5T>NWyFj%5ISW;xJjX`X!AaV z+Z0y3522jMr?7f0gx=W@%8Mo05JJ~MaIS?=L3CdW!Sw-zjT9;geI10&6uj#oJSlQ0 zMCCvz{{e)mBJ2YQ71u-9OQE_bn*-qhg|r+9HN{Q}BR4>(y&l3-B56H@dLKeKNujo= zxdFl{3X?WKs4I?Bn6eQ<(+?r|iSZvo2>J-Zc?!>nz>N?tQkcCFLV!3&VeTdf?LUIh zP|WxULZ{6TZc+#oZ8kx;O<~0*2u(yjh1FXi^xh1isaUcZLg-dUsV+zw-&ePz6Hg)wxOPlTToAPp>Kt-nSysKgkX_FA?jlY<+nj-#Xq$S zuYLkyFNCfhKEzTV-^!0If9^;`V6{0t^>=o68?<3D`X>5IIttegJ*f-m;`d9LZf z#Vx)#-go8f);G$o_nuy{YSPnD>o#2)-6pL}!x3kG6rX(JsMuvvrK*>1eswnWvd?!v z^_kP^qw@y`f4Jh+em{5fw%<0f)!!RjVI|uqzS@7Q_V|?!pO0&@w0G@LF*GmZ$*E_; zd(Erdyj+njt&KEy-vlfr(d~pd_iX5BP)(| zcrI_ofWI?W{BWqz<>rI#Wt9GSz*FybKe>L@G55|zBL__V<4i!u7Hda|s@okEMC>+4 zm#*!LmRogJ;?|gMm7d>!sN9zLrSlrLPOaSAZ`ZMmBMY0Yf23E)$hBuu(*kOCyx@Nz z@zKd|cMNd3M$A9?M&hcmb>G}w>g(B6#F6dTIs-n1z5L5-_Q&_J{ON5Q-U#_%$E6l` ziY2$ZJ0;Q4`o-&`4&KaN@_pz1tygpzSLSg0{x8Pvt2%zb_L@uTESgk3M*Dr(s&B_! zJM_yFS9Xc9JK)}_j~+N#d_wCfU5t4_*Pd+`82V`E8tvwNe4|;V{95m1?yh=ySI3_k zS6er^^H&YByAIEvTz|=(9dGPtGWuA*pMT0*wR&q2_jZ=<4cZC!PCAI;@q!dCLP$^a zXn!~MzPsx5)4455FZ;6Z!S`0xitN}b=bP%=$4-8t)c8$HhU~j~{m<}0UuBl+9a--} z!xLtW9d&b$jxRamnQd=ATC^Lx7WKkkzuojKK9auer$;-zGowe@IxqYfw{^}(nb#{V zPWfTP@wCGOW_`J;^H*iO;3#aj-=i)p*;ZhNt4 z!K07stCOyN-)=^=4;RH%Z_0YcE%5KdBf zQ`9^I;Ua}eXCO=y$0^J`1)=F#2=9pTXCZX@2Eus?GeqDy2)Dm+looT&IiA-|agM_3 zZ;_(?k4Q0F%=i&P=ywoqQV^oePY_(+Ls;<>gn1&L!e$D+e}?d`Sn@N3sM8Rf=OHW* z-Ood)_ydHE6c!2n7YGL^cz=PgMC4Eyc?LrH3lNrxunQ3CorSQM!U|FLB7{>E0`efN z5<4kOIcE!*A}JR_(2o#K<|4%!Q8N$1MGBLcC0hz}e}d5T5`=Y9==3v$^AvJK;ALdF zO=0$B2phyX3aigUXnzI5Mls_GgwS6g+@!EcwD}c+>jH!oze3m|SFp_#dS8XGO)R;J z6j2u;IIltYM0CFfp<*tCjTE*EJs-jW3f_DOJ4FtKk$DixUx%<;jNcBS-X#ce6!wZO z*CCvuQ1u3c{UZ7XgejLH9HDSfRQe4<&=m+{e}iyH9HelOLcmQ3N5rU`5a#|0;WUM# z!tZwoovuR2-VNcn7*F9gh4a5dI3WUWL0Eka!t7fRPKt9BLh~WCzYXDQG2=D_*L4Ut zDSRW^`~hJzg%y85_)g?gh`Irx_ZirI({9Op=Mc7>krzq^Da6y#42Vu%B2x<2qC;JD(LUCXDBnEQvL)a*$eMheNdWg|eB-3STIHI>dDYLeX`h7x(Eqd!!G%QXJez1(YUAQBe>P5K)Q>sK|Fe z=gdfqMqmHmxpHS_pZ!gro!y<;bJm=ZP}_r0Dg_p4%;*#d4<%efsHb1rbf2IkU(GIf zz3P|}?-%=g;>))t*L?WJ3r#9~ceGyN^Eay{Z@GF{r#FUOnxD7&@F81wOli{nK=v7D zd&SnAxgmJWz2G93e`+<^EDR0|HM2rUD7{`-LT5`7n8JJ)5?I$iqfbbhl$3u;iA9)C z*qPK>gqypm2+}PX7EM!Qk=ZOwjS!mLS!DGEIr@i?-T0@)V#qTD>7170unemPeDC&KuI`+nYOYn#?IE&OYMh<{;U#By=GK3H5vyA+OmbVSETe=5z@8O;kFB zvMI^zhv_JAK@*l9;YLaZgC_?kJ1i2kbkTRxR7(&u#5f+9alruLa?37S16G8CK1?2}N_B+G(u zK|;?g2+x~c62^xjWX_6E$3$gCC>w@wLc)tCEE~cN2_v&1)HBB<%*ljMI6FcEGc-Fw z?Qn!k5*nHOIS?L7n34mbvAKxg-^3KpiPO|fkn^&+BBz-tmkX!4nJ%Y=xhdxrQ!O`6 zOEXtaD|1&)Yf~o=P8+jSPFwRxPCL^mFHU>2R!#@wpAV;_X(6YR*(#^ANtPd{i)k;X ztJx)|n@LjuC(1<0dDX

2AUb;`A_m<@7Yi=5MEy0*_ImD+MG0#vAyle?u-#0kfzZ4%!fgq$rd&;gq*V|W)O7ASS`A_2^9TpbBMC<(w62X1XV%t681fuKNF9X3rbQiueAN;5NjPGX zy?}5*LeCcv-Z#4>jIV)^`9*|dChA3mvNaJ-Ncg~n)kU}=VPsu|6XuwNIkgZ9*F!jE zhSo!<{XD`Y31>|H`UnptOsS7>)?AdZrZz&Q1_+;+2@MdM*Fm@~;k+r=5FzOc2n!n` zTr@W&?37Ti5yEF?ZX<+lFCsjaaLLqp2_dvD!p4^nzBG>{9F@?zF~SwIwlTtxdI%v+ z5U!dQO%U?cN7yIfny(5kNbpwSb+fA}7ULTrWPTZonD9xLo+?Mhn(3Ee9lC&wx!j>qH0?oHlc1o$&3gy>8GcO4Rwm){>PevaMaoert=mutf3vm?g&5KtA*3xrplQ(-AzurGeG)t-Sv!Oa5_+~n zNMd$L82<`F=Jp85OjLV>vMmu#NO;DCbwIcwVPpq{5OYkzoK^^hJ0heqLpvhWZjEqB zLK>656T(9YQ#v6$Yc5Jy(*~hZXN2@-LT7~LZ4quu$Y{!SK}gyTVPO}9FmqGFP6_q8 zB7~c{T@kvqM|dnDv#HY!A+!U+#%>5%%_9j%CA5x0$Zpm~Aq?q=5b`QQPSfI5gnXS4 z_DRTXl66P8Afab>guG^#gz=pbGWS5pZ=!l2lb~l7e5{jGry%8Qtn9>^|(p;3VCJLca9|YzTTO%}o6~UYJGNxQ#grwaO z7WT!WoX=vXgnIoDDww(bu;|tU;jx5Drjbe;+7n@8e}pQgQ8dC)39SbpRP&W~NH2tt zfe6*jbfuE7w}P}rsA-Z7LbxEoo9y$xWXJbG$UGQ}Iwoo`7G?V)oRILM2^)fNL&C@* z2=&Y{33K`(6dsDuzziLVP`f|EB?*mu$v%|eO}4SQI1Gz50}v_=$D*m3FdU)zK!n>8 znwfGV5Rwi;SU3Wqg}EtVrvz_(w6ygx7{ME9Yjal>6gmXKTc>T!(*6iXy+Sl`w72y! zRFSHZJDRxHu*f$IVP6bFXOnC+!UYLEMQZ?b)TmHbe`l(AU!Hy6iZu_hY9oArUF(L{vi zF$lNcz+$i|Hx41`XvHxOVW_z&VW)(8;}M3Nx#JPKy@v1@!5n-ou(R1XfnCui%@lSW z9mB5H6WNvRb#{eJV%HecViLRZjb)d&IAcw+$p{xD^qh2Etr(Q^HOO^=2Z>H*;qqben?kSOOOwZy|)f ziLmi41TH)z9F@>|7Q#}qb{4{rsR$vn5tf@4vk~%5L)a%_rC$3;eMsnO5LTOA24Vbk zgv@gg)|#j}2xVs=oRF~Igv~{`Az|cPgpKByggG-23eQ8>Y=+K5sQnhgB?((i{`m+G zB}|!*u+3bQux1uQr3IW1wg;J43UY>MJ{#pWiY`7DVv^KwAF^N}_aVE?O$j?C)Ln$I z$CvkRa|rTy5kdC(gwVOp;($*$Iv0!9OR$JDYnKqmka-9pOA!v67E2NG%}3ZL;fP7L z4B>)=p34y4H@hT^Ux1K#Il?g$wH%@BLWC0%J}_Y`5N=2qxdP#YIVNGwBJxpaB{@B1 zhOR`Yy%^zh31>|HRR|9yOkRa>)?AdZW(jdrT1^~We5^)jz7*lMg!87{8ib_F5EiaM zxM*%l*eRjjT7=Kc+_ebZmLoitz{STpgwPcT8`mLl@gd=;gx2d3u9&s!5r(Wp2-$#e z)wI}vkZ%>jJ_*-MvW*BAB=p>faNX>ZFn%>c=1mAUP1GiYvTG1dNVsLfHY41SFmf}E zdppP+-^{6f&RUehTTp%oGQ+l@)Lw^jNy^ytggv25QnijDL`L-hLli)GQb|PGm&~qn360=Lf z__q-N!ZRjpH^L1GBX=W&m}3&=yn|494?-$4bPq!9?Fg47q%ryT zB0Q8ZWiP_B=Awi(I}j@EL*U|LA42n3gxeA_nsWOQlI}!UxE~?R+?23WLcIeB;b!gu zgl@Y6L+WnxJ5urLg=r-xwdj0*(YIGOuCC!fvfQ(EMpRpnxnHhabwjU?F%9S3I58qe z$o0`DvXy^fX`!`srtWR<*4ya<-<&_=qk8ey6S#yqNVK85NoV6h(#dL;N;oRP6Nix9 zG>YT)C5KrnC#Ug0gpRU=9Z>OXP*pA&DBhrlk8cMmmgx? zzBK6B0L7c^CO=3@N-_6M>(hZP)0ZgbeN#t_o7kdS{HDg9I33v7pL^u&9|eYcE|lcQ z`AqxMfz8r;N_&5`_D|NnWCB9Um`x`F^8^IviT(Yfz}fyDudSIL6ja@plbq&qNKi#X zIfDEv#a8N++`cI2WT1Am@}?i)RXz&L z(*2hAXPjf4t7Wf~X#5an%;&evn?XUfJSlI}2IR4=zakA86g8l8{{j5O8?RwZj=bJm zt)(j5_ti|uWA9Jm$0#P5;`lW|Q$D11?%!cxRF6)6^Q95|ls8uMUGku$p07Oq-joh_ zqYOB8FLr-O&@%tRF1+H>M{VToJ;bSPeWdw%5DgXSEv3hsh8pg9`b3bqb1yI`v%X8| zKFUv@ew_yli0a($ZQiAr+S}7qO4Bek`FS&wzh8*AbyRh8e33pCRoyZEnWxf&LgM8_ zvG(iSzju#8o&74s7S9wEm^6LsX8ztz=TcTK(#EDa8#vh8Tz7m?dt)NKC%!t_n}kO6|-nxiOcwefxLrIY_a&%!CKTJ}ey6>T&X_nf3d4etyNunA1f( z6?r)S_b0xO)a(>VZNQ=B{kUyqFum1sV54nKyy`te`sA|VR3qVDh3~prP3hSO>-_Rq zOiSJkeafJz2K0uCb1Ds=ifF1meq=e??}8PpAS&1TvDmMzR@G{%`de13W;Ojbe|!6N z8@q+hJprv{o5*6;hb_G;As^H$7+*xnkxfTj|wE%#Whu8lAP z?XlX5Pd%$;#(&*v^{uA&lj;2n`sm$K%AoqeCsu1HP3@lzUb3QIJ|)BK;NA)JlGSpc z&GPkLzs6R}i8kA6P0*C-TrkIKFI&6ZXlt~SPcy4=uJOyf){1)Dl@iVi!$F@GCVL6b zv(b71mUiWbk<$6Jv|0iDqr3{WY_)=Ht6ciDwpt&?=e&08sL6x{&lO>M4M^DjDTAlhF9{dlAZ6yQv5| z?CSzQ`R)D8uwm=5mBVT?tyUlHGH672OTUn;(lvmMb|{!-4I85QYb@t8+iH#Q2V2cp z?IpA%R-0qB#%M{cHrHxR(2`qip4FPF{Lff%z7=0a(_3${;V!V6P6_4F^jT=N=J*fW zp)^NGiTBGSgTy`t0rt^+| zGFjS6tF^`dy$!p{j4sX4vfA!y&#pUm*BYyJK)Y+TwN~qhruVdJm{^C#pI;}qZ0$B# zyUu8PthU)|UC@35eYT)c1<`(8*?0^ZI^MR1-SGczwQW|5VtYO4^N!VC#lO+3@Qc;H z2))C~LNpCKvDU5!{=T4LXQ$PA;_soMMZ?4{D{B1FZxZXHmjJ2&y&(!sL&qMg^}$~V zO(ViyG&QCYD2S#JVZYV-;nzwdi4p?rjLitf;e3j6EWcqw(iA z0;-_BfP2!~jl^HgYNyZ?WE4DSwTsqH$B%xuUn7EEou~}PK>8$hX!*>FqY*RM1L$+B zy@nQQwM$kTgBE7BFRb=Dn%-ch&zDvki(ju*)6sv~YH#5G&K}HH+|V)(@wOGevWDZ) zzPH*{t4%=r!D?SyZ6ewot6j6&B(%F$`^IXM(e7F8y49wrYVKR{h85pL`_XDQt)>(0 zPgeWZYSYkuw%RSLO-FlRwePGp1MQ*JZd+|8+9Ncj@AthG-@>oA(P?1(!D_ScU$%ko zSZy|%-s`8q@~+hk{-W0Ip4H}{r9x|pd*5nv@pre)^rK#YrOq%9ddS1)Ck%Bs&4(sv zt#KdNzzgs%f;RBbYC6`75uh#ZBdf_qzpK~|_ZO=z#-BqG^ZC_kOH}?eh#e4rv*J?x z&sxLBX!0(DUu*`SplLu~4%e*~gdpzW_SSzAL?yBs z_91r0O=b<(;E%I`lUr>qS^=~!xX)N^9sU5cuDB_zrqMFUh7GaW2DGLONE+x;qUj~J z-XT=KbgxeuYq$x2tku$5Z8KUB$FV-oT5St{y`)3~liq5o^tOWDKcaytz17~vzXDAI zQwFPTQ~C9N3=KFLt@sZ9F;)w;+IFP ztabn`ztt*BQzQpLZ=ZYvw~94X0(zC^INYjMJA_|vt<=C&&1#47>xGgNaG$fXH!yz3~JGSFIw>gqFy4ZQLV1kPU6=KLp7?^v)U>A zdReGG^{sXqe^aY9u-X~4W>(W{bCto5pt;o=c{S?)ETUfWsgdp_Yxpt#rPi>q)jmO6 zZM7y=JBPN$YE7+n9&N4FUbfl=G`;CmqhvFyUBq8SFBR3NxfMUf|D4rYSnV^k7p?Y+ z)jmfXM3FRdwzS$M{KHjDKCP_w1%AEteKBrpt9^<8SL~MIMz^uzWi|pZl-Sm4SMZ<0 za20Mlt9^z4kWHk$)vluHkkVk)0Zn7d*O1KGb+&fb(A3QObU`DzXuogR&^M7aGIg_t z*YUq=HND|j@!SBtjYI>}t5&;-KMphqb+_8LR?{HV!)mvzra`Eu)xN{OMlayfrFk1QbvDy##+mRU!R(-8@2mi;66&kGip;0=&yKvrW1FYRWw2M|7 z7;O#jBYtMZ!Pf9cv@fkT#A-jGePuPh>sdAPGhDUWFsnU4yKObS3tDy$;RmaYuv+vZ z#5-0TX~kdA?pkdWno9C3+_PGY)qX>}Z?)H~_89F)tG#aH`yEZMKhp3#7ES%*2~2jk zmgB9VvN_WlPOyglXx-7&!6sWfo#{HEX~>>pwLr8kR(sQGI{THd!|hb7F*od|mk(={ zoTisZv+WnmKfRCl2!6dPTUrwS>G0G@H^XX4(e%DwjSn-ere3ah0c(7C%WBEd^c#d4 zA2eaarr$IC+k~d^K@&#OQfT&1Zy?rSV5}H|rneMpESO`plxTXRvBrYAR!fDZ8qnc4 z&uXdBbkdSG-)d>ll(;?%td^GT6yWXu3$3WH#3*qcyNj%rj%~fP=Nq)eR!fhzA5Dkk z5;XOX3}|{=nvS4l)-EHO-sz;H#l28G6m28Tq@#czE{*oyG%#oGZDSn;n`~g_%)Nni z6l}IyI9gvK)KRd-CLDp*1WldxZ8SA^X0$SB>a@G8mIW;xnmX-4t7X;sSMSME4}BjI z8^3J)Qx2u+CE|qf%Z{e^YpK_swRSnsmZ9nMF`8;2C)zA&xaX{0F8pc|bw~s>-X@urU52R{Pp&dcTA0RK3@%R@B-_`^IX;tevV{Kh28c zSDb%}PudNumGGzioTdg8~ zov@_+XthfCHAtzsezIC+{2HXB{VYw#Ullg$6Ijjg08yo@YBg2)Bdb-jnyU9#t38Kb zqoZo=u_7dFb^a+~)!Oe?tASq$OM7Cqn)svR2%swRV{nmEi+?)aRZ2~)Nz)vZI*oE4 zV71y-Q|1G$R>x|}e2~>%u$nUOvD%APBU95@aG5Pu>%@(AM*l~3{ zv;3nw<6t~YfQc{(CWBt?)EBgjqGglh@C<0VBn0%DuAks% zcmNOK5oqaT8R(6pESW_6oyVhPl8f*ud@#%AU_m?|rZz4!}W(gF~QqhQ9zWLS3i_^`QYYghudElIqNh z;AsL);bmwB&7lRn0xh8$JO>(nG>V*nlW+=7n~?gRqAzL8{sJ^kUj~iM8jCgb9)}M= z7a_X9(8Yr;7IbZ(YXP0-bzavgTc>E9lDqktW%WI^T5o0GcpJ9CJFp#gKrHNpU9cPW zz&w}@lVCCoqcMlW2p9>YKx0!3jD|5LeFIOK=oxt5f>|&dbU!l(=EG3v4n3e3bb+ND zWXoVV)TJG@Y*P%1gO*_;p(K=o(x7FSvQQ2xfZo!k6&J0ru%Z&}_k`m>Z#eXaEBLR% za##T?K}#pAVGU@-WF4%B4X_b5L2izPe4w}BHl*x&@m(1HOb`xT8IHPvP6Rr6>twAr z?55G(f|ghGn}Wgc9eL4Zhd=%RSfy=B`78Vex^~hV8}$}Pz1eXFXes6`(DKV{coU|9 zmR<$`%PoF`VF(Nbt+Wh>5l}9ge|k8fFlZSiKNNr*kQ?$qUT8$(FF|9_%f{PMLcQF) zI@ExgPz$O;CD2>AN5g9{2407;@CJ;7@h}0RC-QF+ya`>Q8@viVpeOW#-p~j7LOBgnwpO)dY#5NhGz?&wdu_tS^7PYj9r9~^PQE5#|YfxHqS`14->q=Ti z(z213iB>~;$N(836f!|LWQMGu^Kf>^0XZQT5fmc&T`?bZ>4%$Npr~x&hGE{{C_=clhuOa;mJ_o(R^clVVanC@ghx%nt7W7qFau`7TQCb|gMm3P7v_PMlC*N9m7;HOKO@;s;du_T z+E5K*LGO)!3${WPj*6Ce~AUkLg;|ZNzYd>${p2gL|<4F8k z`Rqj8odf7FUGQ`#u^!M1+CvBE2(LhEXbLYuX>5x^aVPG?oY=vg2Tg1`g8kOY!~X1_JttqE$)6>Dx-bHSSXT>_fg)l_b@=594tTLm=j zs%h5yL@*fEQIhNAay0aUfn;JZ@VJ}bFc=Q~pf|LIc2EktLQnt-LRN@?P!znWP5oiWfFO6PI2A055(5%TpGVp`m$h!pN*9HX_CR84> zLk`fBI$y$9@HJe6>?EKEZgN2uNDYCY=U!eW!5EkfQy>bu!w|SkVqd|FB(6KsdW7UVa;C|rL+~zWs;oH!#bE-BgkdlU`ob&lJSDFS^`Jg9g74re>;&DCYZ_J) zSPP*q^n*UIio%U0j&U$rPe1fP=m~nlp$@zNc_AO@35NopryBGWgPvOW4i*uSUbKA? zj=^y#L`~=chN%!s0d_$WYUUB!_n->?s-Wiuo&!A(P(jzT6(NQk?HT+JkO?@|M@51=rgQd+HkYPE9-Y=+m+wW#?zXwfnb zTNWUr{pzuyMaKrv5MF|&&>UKT79VSY0u-d=xgi&1gH({8TG85})(Xdh)&jMprzJcs z*=adW%Wqn4%K=(V>j5uAejWc>`BEfWosv70NC#0HBj9CNM#3ej!Xl6xGC>B&2*0vl zYeqrffh2GX?OXT)PQe*?4>WyW1UCtIKr?8Eqxq+4vzwr`osCpg9ES1HGRs+NKuas1 zfR}_jPyG8C9>60w16rw= z3Gb2-O|5AvO;cyBtX7H|Dh@?#^{dt#T3FCJg4>p>HH7%v&L5@MHFaWVTWDpCw78(f z1T7wDu|URJA9xKk|G$u`dkqRx)hXc_Q15>ic9UUE)9r;2w$I>x44Te60-CZ{p&Z+E zKdU)=37V%L00W@`Y@oCoK{cR#eIW`u!pl$v8bcE(4VrF$7ScfqSWh??hi1;-0?mxi zgX_tD=N%9QFqwBc;m<5%4~V9RSUoYkwu&w~2f^XwEnmcEdh600$us z4neeXq5!ViGU3kwIiVmFh9XcB{?~oVlrppp;%927j(?Z4__yk@t`x zBRXQV?K)-!>@gHXr_&q8w0<6(LZO%H-@AA&^Q~j;9Fd zKD96ufc%gT@l;xKeH#MZvHu%AJ*gt{a;W7LMzrru@ z2p+=Ex(NCSeuVpQ5AMPp_yN9$+i(Qlg+s6p_JXGJc7vw&bbr{1)@zKb`$XL?=r%zo zK>qv|ux}3NVoMiMy2#3e9=oKYXG_xPS#0W>N@baWt7|P4L)Ti`wng%~x>nP+qLr(Q zN7>A^y6&sz;n)56ebDvWm!K=%&){Rwm9DOO7Xw$m(cYVM-GS_e_uvrdigXWb2VE#` zgRP*G{%TkSD`5p_XjFz&J|(D#6<(THZuMnWSA5cCt4ne3+qr!kK2d%dCyYqC4il#< z0|^t4A5IzG0?OoCaEY$N-x)T+hG_n+w}KNl+HDy~(?Bm*8F0i;NVTEJT@7g3L$#?| zPz}BVE~5(XYDfNPXRIqo?T7_c(GE~Rmuu~l9$!-g3a@?f?Og(HpNm7a7YF-o7~+fe z-hsMm+RF}SEF&ej542ypi#TB^q#p#?$G3C3i}MKkrRfgFr_ufjr1NOPfKF3l%DL;c zE)%X}#qSUC<8a}$|188WxjMHllRi}Ye*i1tI4ARY68#1LTmU5^V~tqxJBcg3O0Mcvn0v4vRHe%79dK3qJ^t-*9S*>4 za5o6L54#4+81Y4WZ^~3H>a~}_br@Ck6}zpfa-C0^QNq$>qhVH&T?J)a;kEB;Pz`9m z)12SMaY60xB2sR@0Y&E8N&8%e_TyJ+Z-8{!xrpQ2xcJoePIsCz6+aW-MJI?zId*|m zy7-a&z_v2sB1@R~UG^!1+MjTr(=M@3{Y8_7>I2b__@{HTW)R(RuL++Npt}rplH|C_ zASq}hV+zZgf^Pm4v2Fx)L-+*$IZ!`(4C=7Ifd;5w;AhZa_Y>HD7M*C%be&Rx)eqwL z4dq-JSLT#~2cSGXwA=E#605DDiMalt*++#_#$D%DhNI&rteS8EHC3sEwO_}tI--u-tG5Uwdz zi>g6Q6v&Q@NB>cE@!LreYHCY^M*IksDecpYgEEEV-IlBHt|?V}t{^f}25x}Dsupyp zE8gR3e+5=m#Ls|hcUAY_?RO;R#3QgWaHnV_`d}CT;2c-ckD}9GhJ!;&(_L z`-1eQgK4Y zk&x!vrs8UXC?AA@CWkahlpfk+t49UW;n#|URwh1VyA^s%(9}5dbkW{<@^CgZ!;}rQ zq)`k*P2_25BX0stvr(E~m#u7^eNOyZ7CB4UJh+OZC`fbhDy*hZ++2PBfGXVaAru6y zv9u*XbI{aRBxqv4AvA#cP!B3WUC_jCMbl^~i&{1Dt|wRx+_F#|o`Y&o1u8=sP|%7X z8!cj%gYqD~Dl`Jcvjw*$G>4|ZpZ6Y54WNb7m!T8>S8!XX61AZ()7QgrC*lrx6BN-R zP(%wsGvV`K3QUGcpai->E8y>sgtSK05jsF?m_ZuTp$-1_&<@&q{TxJYLxDO$!a&kH zTU`-pTQ>4{#ntu*kj*d{4BbH)h=RY1?^UbM&_NVGLKoR^3|xdm@lOCPQjG&8pj+@! zFcOr|AW-HN@j&PS2@@WG))#s~ALt3ut|Yzf4!12M=kJfdUxNL*iFT1WJB3NC0Lrv7 zstm@fmFPd(MgfO_i!5QSB&NGsQsjv>pW>38i~nh#p#8N|ftA419X|bav@sAr5tTp@ zy#}Kp2L3MW-xbK&x_;DA?U*p|STxsT-@xy3@2W4Mz4l9Uk-E<4>?hj&2@9u!{L%i3 z#069@R)_n$j;1PB`{|JTyNo1^BYvli-(hV$(TVm}LjpR!r-H@tR#8?Tz@QZ&v$jwQDK7gMS;m4O?M5=<$SD+=Flc_FKQ)I5-U7!4bFx z-@;Y62{+&hT!%|=4KBk`_!7Q==;QqR96o^e;XROnbZyIj%(`y>XKbH<53Md+g_C{} zF2H#>2cN*la27s-GjIy7Q?Qd7|4*}_Qhti7T*gmakt%YvXMA1$uR$eM31#CltT10e zeEV`9C3>cdg9>>&6fFhd<(Pb}Hgv#@8gKct_6A z0eFQ!cpxy|w#?#hC*}{q?irZNL696b8MwZ#Z9VGbwq>Wsp6qtCUm7+vPt0PDUsl{u z$Ox6lX9nE#kPfmyIAnq_kWB<+23;Ct!&Rg%q1x~|s#XV7>e|+I+e)ks5j+ny!6n=feU!CT4Y^wBj=!22V(_tFux_%MvLRbLvVJ?_JzvsN) z=$y^Q9GC}7VF^4-AVszezg%hSp({ zYuIj#e;uwGqzissm2bg+1FplD@CAGhpTVmn^C|8*h{IN8Q1YLEhS;;XXW%rP3}nbW zfk$KMQQSii2M1t3OeC^>xUUe&Ufe#odvLeIZphB|F5I_)L(6X~?oNn>9U!}RV4HQF z{~+6n^Ifez9cJSQya(^YG58RULj*=2;GP22&PSl!%l|P*7p@Q&@n3-RPzo-AO0SHn zM&wt?uYn48Ma`{J$>1{ntMCYCHOWt?qA$ zT-6;z#&6@gQch*T?@iFNv3gE+BGd-eQWo4uP+?2p^0Qje-rw6Q%0>|=429qh#_D7# z@ZZJNgROeN^=JH<=_@?(>V5K6PrznlI~P2IKM&|BSv@VA9ZgTp>M7dX__IQ=_Tefc z5fH8)p!kVM_1J9~qy{~P`x}}ESC8fD@!U)V(xbX*Aq}JgJ!KmL$w5!uCWRyr1P=*+ z4_taNiH{Kc@%zCO{K~{H@GCrq->q956Kw}zr`m9lt8~h= zBL2I?-TwGtqT`FIMnxb4RlTZIT3%4~sTShzbAC0EY_%<{Pr%y3D$LE?#9;Y2}7oYJXL+ zs#6iDebhNzr0N%m`PC`oN9q#N0h^gddJ||24VAb8Ho|qKd{Ju5{N#9oTkF)C#|vs6DtQYKQ;tny4*$Ylv>iKi5Wzz_pPQbR9;1mpR!u ze@khL!!&|V78TORiUc;HBe?^ za7V!i=m*20Cv=A>=muS(3up-LjO#KLziC`k)zk4G-$1!iqRt@x_N(aHm$3A*?Spi19O{YF3y&xGvLut&K9J z&K#`(1MsM0x%O6R;t#*FQ2^l%Q|EUbG=2??wBdD>xP)C_QC#ZuN{kEc!|24 z%lLKlzpHk2ESDK|K-rGR9S7=9>O%<=j~}mWPU!kC;eaxk9a$j0E-n7H8^;ss8h$m% zsPoRmKONjXkuGR9!3;Fr4ZekYQ`dh-@ECX(;@}|cgT1f|Hp60=5A$Fy%z;I)02YF- zoR{Eg-%e1NrFMH2?h05A%U~s}hD{K?hJXC|t><4Dxmt_64mQ9>h=m=n9k#$buobq! z+tx4F5QmyW?jE*x!+HD%aQDMuI0X4gLzz4Qg*0WN>+lcR_yFDqU2?yNdlZg=N_iY6 z5%46gE}Nr3Hhpk)!_kH?(z?MX=pVyb_z2ceGiPv5Ls#sy-5FOlp9gV2c>&Kk_zbl3 zJnpA(5!}A-@F(LDw_CVh!4>!d8e@MMx4XGJ!;@8Ssh-J~!ET~_4d22IxN5hr<9-9z zz}d(yDKRUBB)E@oe}e%0PjG*SAK@X~gCF2~(Dn9hTz%EEFz#Kr1H{c&b@3>YU*Q4# z3_pP)QUnTo-}<$!$mJ@Wv-t(TszZ^wPNHquxqHpW_+40~Tv*L1ip5hb8!7?p_ZWaAQ6JU7teXGYIIw&y@^3t91JhAfZ=Ql=vD z{CM&~UXR(-*^?vrc>D0B--o8lEKi=;X|p_G{(&Wml#1Oj+fyqrBQ+3{H>^kal z3h-}Jyh!OHr3r0*nCl6PDx=gf@VohDu?71>Phb#Pq(qStzWEZ8i@DcfbJ2}$E;nLN znIe%z82FkKCIfrU-))pN+l~jmNWFV{sf_Fi>lRdc?~q^f5vD|u;>C-U<*R6Y=aH=` zW)e=gTA9aEV&JxbDF1Prto18-lPFQ7B!{I5nNLvN(`LpXN7&09S~kdc;i*9|-69ivzG}EW zx?JmQUq9WG&9o$Fcm)i2`ZMPFVpC?$sq^varv^>TRK?xf8uShRpl`Zip&vap7|)(i zg6=KkKkoZ_JBmHsv&39d+#2b^F=+a@Yu;a5RNeH{;EYMLfU5b{6vPQvUzJ_0MpGN6 zd483uo#s&aa+GA3k$zv9Cku(;dkmQCiP>_sX0bN=f2b*gBE?J5uO6AmMV@-$ z`f6@^3^p&TQ}$7*X|Y~|NF|ZU%wI$?i($YdX3X%=3co~+YtlsqWl5sAUpe-u2jo5V z?BbX&U;UjuC43#Trn$Mu6Ui%gGB2huolTj=Z1pkS7n9&9LMcbnl9c;>a_*$cGLdr{@<?IG6WSb;kVEnSw^j| zF^}ZLn!?LT?Kt5XjAME~4jwx^X@TFo;k}jrg=vq0|9vxDb{=}2?2bR${lZUeV%uO> zid<1`VP-Q1r3z!fG-OPHT}2jldWQENd;66Ps#aEDr?&if6WO$=c$XOFo1Uw1)|zpvFwSnSti|Aa3`&(E z(@K0y-smSKll6@uae9ODJ(@i#^4!d+uI)^l;yG`Lygg+W?~5VdD=|>VonG{nDS5V6 zDu+Q?U(hY4?`ltE_$~}WFgVdVGT`d6Q`erx@SZuK7*1iJstLT*?ne2}Evk59;Be%E z(wD^)Ydj^xgUN-m7?R=PD|aSe9_fvymEwJiTeR))VUQ-3;R$nO?&`?JVKH(#%|&c!p^zUw(KU$gfJqcPyDA>!`pFGx~<4 z4{m#!SIcvtG`Z8TNSM#qqtf+0G-=Dm`8N-**OAO_jdX12OM4 zqY=Vm7^oE@-H=h?xt3gJJoSd4R#uu*>xuFn!?Ef#S?`MPecNc>9&ef@N>iym0~4{q zQz%*fEWT*Um_{2sVb9iQQ|(#sljZ%+bbq^5fPYmpa)YNrc&e?Z6VYz&Uzf?I|zi-62_c1KV@kVxYnmEOjIj^sF`o58O?)!e1_jzNYMI!z3 zn^c=UUBkb@ATTQ{GT*-MbS&m&~sf@3(Ca_1Hp;L>)hZdz;;tAl*t3Pe=WDj4@ z4z*|T1exH7B-`b~zJ`Q|drLUn_st>6NCJDjuvs3ifzE z&K~7qL+|46^!UExB5!qg2a!L;z&p77-}ZzB1Qa$AZ*xfc;>Brz`aed$kf1K2+UAV5 z8k?=dg43BNZ*zC@smZ#HBW=Cuxs49>8V7(1JiNe;z3s1-91!47Z&H79XNy{9&o;_E z!2BTRkA|r94qHV{-*<@pimA38=Lgg1tfz=M`wodjnR*{3*z<>7eDe%u(soao@b?(G zbQH8c|7q_9HT;KCTRLaa{d$^9+ezt^Nwb4qSe4^hEt;`Gk!{rrKFW2D{204I__2 za%@jub;+Fo-Wk?*r>6oh)0@AOdVkH_+)2bucsUjMSYpcTVyn36zRNS33j+FBx?u0g z_Jm2Yn>{wa&zh#YIkmlH_U$IrI&*$EV@LDKzD%s1)@kgE3ri2D)^v2!q8&_?Jp^uM z`s0MBui_hzlNC9VsbJ|#-peyzDRY^)J;WDjKHEdqqRp>MxSE=Rxhi?gmd>XNlxv{F zM$wkxuHF<~8XRT@?d3H3*i7F`nCj-sy<{w($$F58a+&t~a7votIN{Z+`;LzLRp&PB zn6!c}{)%%RAb<7EW(-O#u?Ag+yjpqElc>s13$UI&YQTWT)A|pp6#EW)s9gnp$2?Zt z4=~^&A!bC28m(ttJuu5_;H|iKP4WHY;gsn~j=~$)^yQ(@vgi=Bw6#BVdF%v7Zv!I*&G`4tOF>!_jAvM-(fG&e=fnFCLAok(27U@O{} zDf7}nTEbh>t_=B?3UF=u$JI|7UHvqUb5}oI>B|@6=oI!^D9<6!g7E4u`ts8%S)qOX z?&OZ58*})p3pFyA4w0WW=D{Jtlr#koQ<;aVCqWVBaa}~G4qdL@{-wpgm8mQ z;CqBCV9LnpX}ZhVWfs3j7Va?|tCs5*J+v(B_~CTapsp=wu0iH3cHw_B=xd0e>Q0#K z?~_P5Q{ky&dcE)I7QVl!FVgfkTX(BfGReC(Qo?z$UX+;i1Wx>nhj9%y z=_Ey3a>BD9z|+oDKIy4zHQund@+3#oU$662U1ZWPuAT3!KI}lc%jwdjf8?!dZ!?}T z)lPBGll>H@8LwYmWZ)^!{HI<2FBkqBPIKvYtpkf4G(j$NdED2}81#+;$nb9M6NV^XKLw(kA(7&kFGL6jng@0cfNXmULcp@FDE*4k}` z&3NHO+pv@&Q&(TzHUG3!>$*)JX7d)oJ4D&DqxXav$qVS`e?+?Z%qg8RyW$Wi$O8 zk$q#`}KWesAGV>X1o=e0^_+FtN@7#KTW@I*#5 z>gO|l_2jvkod!;c^OiGGhh@ut=HvxWXh4^K=HO?Z(1?CmYV0`DXM53X9|dWui#ZsL zT+#hZ#6>LM>}PtU3l1&49?R5NR{Z+$hi~tmIw-(@kqe8PhCSc@aN~NV@4x*pz<&>l z&eiAonag*G<9a{S=X+9nXf3neUDvqFZ^w0M5Lu**ZnTp1Hz%)Qk*UA0h1#?{)v8v; zvO}K6RjB{$Y{8)sFJSO2Q7;}f|3>YM-3^01ipH?k{mqhJNUTqPGwpNSG5t-iPjO9u z6Y~UjeSg#L0q%kRX0P;*`zyRN#G~3RF@0i_= zyCrX@pu2?GJ=W$IW5`Ot$dg(16+lOv4b|_5;l4UwI1T8cvA9r1ICU z;`Z1kah0WV6uadq5HOq=RUX_{w>;Tg(*+C~IGgPMQCwR*v;T%CZSn+hnx8-Sr1f}3 z;~y2A*~Q`26B@gnE&;4dW{H^hAVrKd!|^&w`-WqO_eP-eeq zoX2yveRO!~#K#&=%P{54edbW}(q&IwXBlv9sM&q_X-E@%#gi#u!!VQM3Zkotgl;0` z2peGTUHMO4!yY98zGLB!rguHO(g?HVYg)k8^k0f?d(>a_1kqj}VK!Wi*Ry^ZVJ>Ui z9Y85Znz|gT0lwt^TD$H5boPnaxoUFByKsrcpD_FJ!s$TyOR;Q+{D(1R(jFJ4Jq zj^jp|Mfd3!|K7vSjWSh#_?xs{%r?e|O3}W_{RyUL)iqg`miPA6vN~fwGsG;r9xsN3 zrF6CQ54!g-%MoKH-+0qVBrx7vXK;avCo@Os$ zEhJ3GhA*9TjPE2g?i0V@B$vnNHczLi;>G+DKRvkycV%*CpG;#+#q^v9ijFZ^Zqub| z61UDad)_TDY-H!M6TNXWi(Jajjgzg$nA6#U|Hm^%yb=;_aAz%t5p|IV(Gj63DZf~J6(LPW)jP<%cncw?O0ett;_@55E2tjL z()M54pu`kA6mi;2*ar9CFdK4FQ%S~|m=wXG=3vg?wEsgByMnlia0PH3p7DP2PyeZ@ zSC2EJvXZfcRpnBM9cQZ2#Q#uKmj_!k*TvmA?LU;##pJq8VrMVcy#Licu`;@|U&6Ds zE72R{X9rV7@haJS()Jx!f1JGk4+SN||8#o&>(Cl+q87kiM~-~`>9hYzG{#~(+ZKy>~Ia8_;}+Eg>Dng_t~jadmS4wg1B^B{ZqA6 z?NUFp(0BgzK62v5y6F?mN$%-Nufj3|mMebRG|p3^cQsdc#r^iON9Wmhb`9&2wEK`5 z-aX!%gR>J&kx)|mcB1K{GqY__d)!9&Px9SWeEh|oE7S4})6y3!Mw%pWm)E|NU1&h2 zNv2oIzrXtN-e``VWXk);+wY2-@WkS}sH<9M=SCEJzhg5RQEalWWI?mC4_)0Uug;tg7Sim$29 zCI4nhg9@MNDF

^AEOJ65c!z_1}(0uJT+KPE9et1<|@LD+w=E|1BOD&NYH}IQ{F% zHKCcUWjDF-=el&&_25nOT_$hO`}5_qi!8D0;eXCc#K%*81Ih8D4Q?jykyg(KMe@uI zCw5mkE&&_SKi?zR+(vYo=DQ6j8lG?E_E8lIdZUdj!cgeynrQ#jCJDD)xfAMcipe)N zNA#TTo3o5;8b0{Ykhb@|33->t?2s8T0t?MS73h34^=rMZCG}eHNEzSi@y${NOrCDq zB&TZKHHW*{TQJ>hK#$l+3~7jAu`J-(Hzkd59k7iqzbEDL;FS5HSS{4YVaU-#zhUUh}lhf>~mF+p=tiImrpQ z^iC`_oL(EV`tYwY&uAq+QcEnQ{1U&RIW@yXXbLRh>FWRclo^ol#AtIHF`BVElw2N* z%d)&p!$mxC<;^8+me^SR?>)<1Q`!~^7(UbFN)_++?2DPc9@Qo8=2z+Fq`USs&4k@O z;kG+0TwirP?;m6Q#~VC%tK%*)T+Hq$aAk4hfvd-@Z<%&!p7z23H;UPtRyUgc!>Px% z@&94Q#D9``A#J?+OMF7q)p%mVp({;d_3CONVd-7G(`T8}&;I%R{HI~ewU3L(jWI4= zcMK=2O&7nrTyt0Cu9qf$&U2R}|NSD}Db%P|^-r++ob) z-M)LgKMvOa`xSO#)$clE!YrjSrk7^OUA4LDve$G0_Qu6srull-U(dX*Z@bn=B$~v6 zyGC`v-J#&3afg7LY)<@o(hYC_{VF`MBG~JLh{UgM6DyUgTU&~V{BwL)<@3iZ?z-dm zINw50DNQ@t+BP4D|M_C?Z;t@il&;d;k&v)y-4Wp`GvP&;JMScZJ?JX)zn>!#R%XI6 z%^r=WO_u*OiIFf`S2Wj8T(3>6MOOdIRE4{ZPcWtL=G@)XeuBICKMxS00sp=>=$9q}lVi-EZOw18)AWk?iyTQ$M zKbKc~?3Paa3N`V&QkS;vlK<=6R)XpZaN}*lZsM-Z{yfb7UnY4y^G%W5!F748n`h=S zc(~ThFyGA19b6)!$b8?`+w5Q3r2MwVrj43a?Y-SQ}$GSntPk5OXbgT1WaCR8XhJ~JTAOt9+Q$;rUhs8Jy_gmAEkKuys-8r zEP%O}KR8oBwWTIy0ZOybOh3WXNRhjh>bi>%JGg6Oxx6e`FS^wJf+sfzF3 zn0PjJM&=ZRwI;Fb(N*|2cVh27&eCt()0+5jg=t6FS8rpXZ*&~WS+P{D`>A{_?TtR^ zN?)v7&Qvac_}~H_JtS7|(;QjYqkE;D`FG!0mv_o&Z>-*DD2uQsEqk_pc|2xe<<&*J zVZ0BqR9$JZ6bTNEZj6QQl5(uwQtPv+?{0*Bx$9`k*H-`b zi`^5>uCX>yiC)j-{VEUQcpY9eCND&Kui!IDp2 z>>t!Ki8qJTh2k(viUb!-W*_5Pu)!QJ5nNO`GaJpp);!#BfQU6Q}qP~j)|p%Yvq`*)t8IE26KDN zD`glmvb=4kT_$i*+%nWn!fhA%xNW9T+2A(0TCW z5se=Mz_V0Eigl+?mk(OdjjEu>(hrNfXv%FjDJWHdjV_?>c2l`J+a0%?%P-;%+&;TJ zjxBt^gzctbeNwGoEx6Vnsr-9p!*-a{<>_Y$@|j>eG{EKN(hjqv!r$cT!4C7i^whB? zrXC%$c&zVxXREh&ta>=*Njj!Ito`c6nu-;%bmiz4Yx=MqF^UlCSm)Pfy}GaDdWH^# zU>x#$E7laL`?RPL8*JPMgZ$sSJWvCZEa`!MzQzg-@Rcew;wYASit~d^cXIVkZ&rJ| zq<6?X8*8do3T{)`l{@j8D!J3wq28Te?8w8{lIHeyT79j}@5Pealwo|Juh^?J=32|JOeD z?|m@gk>IlT-w#n&AudK=4ojHSHG>QNhl3~n!1I3(R=UD|Ur!Gk+q`;aPn(bJFj$P= z$2YztEJkAt z#)2i$M6WdwV~jm&5PL7N<;EmdRJLr9gu%`hH zgE(06>I{8x-Y@1r4^nYE)}h!4CxbklY1elXMRr!}6vTUL0m5JA0W*>CNqJf`CTAULG{{;iF} zsxABWB5-gbGpvQgp~$DDL^}8|t6hmWU?6ad!1v_UQ#DnE_x$a9;Vi4%e=ufk|B2Cx zp$=Rs|M?xHJs{Sy>!9dP{M+j{q}_FSr0Jd(;n}W>{N(aou{w;?d>WIAJ6gTu?jh>g z6&-#CNbYd`K1uhx)UH@t(HM^a-LBMOn#B<14hx7{@!yVGG<$b@m@*kFxE`j%5o!qi zt1H%oY66VUz87y&FKKm{{33vGH6VGM<}Gf%V&f04`*^ZfUyCTvWM3fsbD|W{bhx>8 zj*y#PyDEmyzdSvanS{^|fo_u=3hD;G9+9&k5-i6r{Q=AEUS7Q=?9iH+%~n{^u0L&z zR7;BrZc0hN_0J)XNW>spj!>sa9k-jJ|16*MYouCF>7GkfqBvg3rJlW2e;N~|RyByD zS<2p{w1dkckJJ4qHC72bLEXE<>K>vSeK2cYO~?CTePGy0+SMI`F!iLE>3khNDD~~{ zyEV`RK{LWjP~w6ft@X=j78<=n(MtG?zul&j^wzuJ^+7V#b57+pNCPbhowLj8o(k z4eZlo`*ywZ%Ee82!JB!wp@LUmm!iZSb@z;$KkxS)nY@w7Q=9s@&gK;L=DJ4!!IVWe zOETZAJ?&#r7iq~hDC6_qXg9AXDBFg*%rkGpAG^PN=U;-~n*KIAMc0Ady!W)22>N^# z7Tzq|9!FcX_Q5j=p@5En9)K*7ju0GJwOerk%yU0(SI)`jou%;iK-uSj;8@13`n7X$OCOcddaLnc*I63- z9`yAHAlQhsKDU3-KXV~OeNJ(TdQ z;awlUowX7o7F*kIMV{{?2KgNT-0gq)1)Dvx{M$-^U@XF)qb~1bnl7};5^zyavA1I5 zCw;=_904GfN%)L>iIS`xNdj+|0Yx$1O8U@9iPE4gzZ^M5efy{`3wo;dN`{afMOb(@ zMVABpcgRB`WQ%{F+!LC=)Z0Q&5eg%os67wHn2sgaD% zv3lq=N*4atI#(idHPI5xEx@HKl(dbyrIZHquRnxo#WgFN`@+zQdY-16LU1O(Q)bi^ z_jqS84*UE(2(KCBB8^H^CAR&BGE4B!2m~O{;~Z{<9(izVn)PO#&M0BCc4uVIRZmu2 zKt6$f=g#1tDZW33c#NzYQR;z?k_X_q?PqE}u+V$a-z7%H zMm@7_Ds9xTg~`_MmRrAwwa^}$Yt?Ty={u~2!XB|@w97{cFG8v-X0P>`FcgkjF9{z? zSGZSpzf$iQwYAS%zY4QfJm}C%bjU+CA@!2{U+5s?)ZdHa)Jx|5Mgg&^n+xCZ%@Dd$FpQGW<4;0)%<$ZQ)$~*OwXh!RdE8Sk*i0Hf;igf_2cGSQvzF zZqrLV&5iB~uGE=vv0=0LQB%0@T2yKG&Rq&0q=s9vfRm+U#nWxW6Sg?cWeClZ+m*j3 zxUuoaFGgOPV8J;Y&6vO)54cCi2C1=R-x86U9s(Bcpk6ZI0a*tBrwfEwt6j#Gc0JIp zuxYBA%)WWH)@Xh6=;dHAN**ENGeC{vuuYRplj78I=HjIB-9v0T7C$1NAqbf^KBDPE z)Ntk7M|5cj_;=tDIi-Mq#~%rUYWDTmIQoOIJn%r?O?2}S_546}>yifu6Zm)WW!=XQ zhP4O(H0KR2m3}PTXvE5#?71JbOA^OIQDA3639sAV%Ik2mQ|+iYYf1ITG%FqB81R^` zGWN!RWLLN^{ra~@!e0!tLbjIJhtA%g;_EkPgiArhU-W_*7egdqoq=W0V`>wRUM1t5 z-KW~&(DL<{9*lI+4y-a|8INfmAi{P6g4><$ws2q6#VUM_n0CAoR}jj&87W(TXnFCo zgDe#+Q=xVT>EH2iu*U(w4Eeato{^J6vV0ntfMKYSPg@c|Xi&cJ=J8K^m5v)X!XA*kSpiBL=PyWvqiqWSMm4lix5bUB ztp5%GlFn$9a3Hd}&edtd+SSH9Lu&-~U`Rf7LS6F+KsW;8?yA*6OFKSa1qey#a-#F80iK5C^g$B1 zQT(ch`~MPRA@GLt9@l-~w@iL2Sia0Mp!4PfgVI0_4x;c{WiCosTps4t*u65;!h?Z` zfww&_J*Bsk)sRwapV`sSWHmm4uw`6 zc$5t-FdHh{7O78O*wKnnYNg6Qz7YJrdUf~Gbs^t1w1*uD;gd9W4*)VcRShm>cxgwQ z@lR#vmqH$cS}yLBtvV`JSYLp=N>wY>Zzw?~+pizor$VE2D@eF3aj4L=?smhxTx&@m zRPLAtT2cYx0*1Lgdlnp#V~MeXOajO_fYkp~f?OUS+a`FyrM*^=jk2Up#af|;X+N#7 zmh4C6!i@?n8Fc2n{m(Vh=cQ6D#k2n?x65U2|6U9w)7 zj9L$`K1i*UmyMR#_khNc&J>ivn(r*Ioa@wP&7Dtf)B}W^GtEW`hb~7Pe)DbLDF=tS zwf@0~Ep?{M444`1)*g4|3unsBfWy;nqjR-~)@gUlRVr1lr2FXP?Q{iK(N&_{kx=t_ z^xH^voJ&zO1vvCM6s_2YI?)@v<;p%O~iak-Z6 zQMps)@jr0D8m0w#-kx*?bv@q(1Y>U$+#%9q+_m+n%QGNwTf57_U3t%w>WnGK;Gh{} z)cS9jED!ah>ti5rqdjTQ1l2^2W7V#ToP{d0JZaQejDaI<9E*M3EKf?j3Ph4XWtCym9^^B2&^BbxX}!{0j&iSX2Vuid$!-9_haehdKiN+zex-)4N0 zxKQhW7P2X3YCa9@9YTD2lld*P;6>EM8+9vI?T`ULh#vECrkT2Ygf`chX#zj9&2;x8 zXyjg5qrn3IdEWagf_tc;p_ULjq_WpcUgJ3oxk!!11H(BlO62z&UNm_;H1?dgL7Qa< zu4%gG*2Mm!HB8zRXHYfD8?VNif2<}T5^7iJ|K+^?ofU(;+rjQ|bxN54-`>(kNd3Zj z%@3T}9_`g4uO^P6L8(0Q0XQAp7m}{=V%(_a}fvyum#MuJRK>mwZz5iD11L z9uub)oJUQ@FrnEQ&-Nz{^JJgx18P33L9-^pK3u9vS0`c&+Ys);`Bd3ii#B|$z2bfl zcja&`dj2su7l*ru%K^_i@934!Ccg3k9+oQL8D5)$CP8NH>j)a}yyfLy_M;jhfRH*| z!a4%RiLC_snK=o|t2a@X6H5M6Gt6(&j0KaiFyamAVN^{zC6A~)aUbWSL--LZg#MpV z3{TsNA#P6NF<(1PA9Htew4Xr>uS{-B{alr!e8UtLoA|I)tRFc|$M9zYf)^L>wRk@| ztg}l)ZTK}&o$p7jr$d-Wmir-;hOg4j?>F0D?s*@^VJ4y5!xL8%JX=!BKK?#SlTW4=p%FQ}v2jncpAn=7B1#g9^_A(0AHppAZh{PdwEiLd&S#oLoUN_fc57}x+Eh>`PrmPB}<_kf`mH;w;g6Dw% zdV4jVrvs=9-VGw<&3qdOImmLfUv{%kh*_{q_}@TU_6f$tc3zvvTr+VBU!mkR52Z{X zb@>8KRSKk@%klILq{LZZMR1@n+)m-S-QP~BHO1PkCV{ka7K~)aKx+P(s$m=uNO`EF z#N(N*T_BVZNSnR_<=R!7?s`g}c>=JqR9M0@>IN)-z}a8CRs{b&JCHVHq1`orr~rs` z|GIZZ)$#aMYgb!r+#X1KW&`37AeiB6AEi%D5SNw*(%7#-5hNu)kjl@& z=#&o52k`zQI=A(aM#pQvPEx_vEk)Q?hQ3dEFlbN4==fY9n4i={Q+w|LAFSL2VmzYXn zfINK)dHOtrHULmhEi`Wq5#2P+O!t0y@#s}6PjYd)K`8i1A zMQ6K)`NLPXoi7pspq-~(5yuopjKILQc`Hy*H8@prm~k3(kE^^jWJ*&i81)ogxIjkjSSj+G3DjD zXXkEC=QJVKAjpDk`ymo^Im1w=M3?YFyn!6+ypTgKSk1p{Hq5m&2$Wr*%uiL1H(uMT z@mkNo6*f>B6qyUm1ECpm(9mTG%#D@GBGn|j1?{HN&=Cw$`Q@r>m0&yD?11umErk`C z(^U8>bDMF)f4!howFJo9xOP0SgP*8*I09 zbcOh&kEURUo2Sz=i0Y+%^lrxwd0#k!-A=HDJ&wQ^k+>OxQmdDHKq z5V9u)iXp~SOUc%SzQ7?#hY)5%(9x`o8=qmX|KhEk;*PVzx0eN$=DfzgtmRs#tXf`@ zZBU~9Xvs=A02{8)%09@XF3wObzKvQpJN%U5t(jpR3}cqLL3J&Ko7D*U=bCa!S6nC+ zUAxy>%D)UOL@Dc}UhQ@OOk-#*^m%P4oRizsP;#1!skkIe_&z<9DG7v}{-M@0mu)AOG_rCAIo;b~-v{JLA8u+# zegC2PGZsRd0wfz`bIT#5bU9Xz>ysQ<2{%t0ZcZ~mTJ`@o4#i{bBD^fw5EnJJQp<}R z7UEgv*nLo28?#L4idCj~K+Ib(->V4mE#G{>ZO@V2qOJ1r`UKI$3!oyt;#D9U(?s|e zp=BX7d@F=ik8O*Ri5cPbtst`!>@Tm(B`n_QJ-gp7B${bUJdhVTM^s?^1HLLS{+iQx zeI}^;0XYvesT^cVC!kCSq?ec?T4tjip4C<#)28<0yIwAul4|FRN;F8?GL)DLnyR8t zHl~A^s0&}>X0hQ&5GUA}9RjOY5FPs(OsFqsiQ`u9uXxFR1}`wlX`41XbW@5>4TA~| zVo}2&ZH1hMlwd^)&X-9GqF2y|$ojK13%dE#3rdze-9Cu8!Bhp#^&D10*rQK7oLTn# z(X0Q~`h``xdeUCol0C5Ibu%H?D5MDTDL7lp6#s$z_1$4x{($CxB7Y%8<4<`OX&TBSAOJB9keO)P~lGwETa!5sa=<5TFy{M8Wcu?IE4VbAk zBtrM-ddq_9*Vy7{*v6Gh2VW~Ws({(1^!d1=E#C=fsKA^6Wd}F zdG?r6BTDFhfq5*#4@uvjD4YfrYPK;$0k@?uC^T@~2XT~?m749iZ3A3r?o~2xY*5dW zw^RGE6pX=rbKp5XlJX8<0|*mV52ng0!$qPvM708z!OPcg461A8(mRLidQHklH zT*bn5HQlM@LAaY1-D&ti>{w3dPFMNe<6WwFNR72rixv(mx#99NBYl?a5H^k1`hroy zYt8ZY`_En5urm=QoPmLUHH)SVhv0q5GJ!sT1gq|CEP%a>qXFcfFVeI6f z=8_-q{`-5>2~Ue{DopQ-FmrHNpU(sR?#%~oWI1yWbR6%$PuqS_LoD%t??cQ&3U?B^j5iI^_=VN9vr$ANbJBo>V0VJt*5tEbs3gTJ!SVG40un(@jSHaT5iQTb{U9YI@v^f;aC4MS=cu8Ut$rd$v;R<^Ce6z_irixD zGfs-X*mXV`{pE>v`O9$;4i6s`-)>bOdiw}M=`j>_1Sq!j5eWpJ<~gt1e`OIbn#!HJ zfWBe~GMd-D8R{QdR+fOgMtx})P*_#~f+Hehv-qhyymk!)gcOBMC~-oG?-8GGc3=N> zRI$3Awjt7}SuRd_YhRObr|G!}&35*uwYiXNNaq!PZXZZaMuasKL(1$N7LxqF|{j_h)eu{z!)3f27v`^hEI~R#3wC0?wC0_oU~?e zoIS`cT9$;)8IZAeX%_ZPI^Y-9pMiKXX>IrPrje$)DOw%ej*AcGqJ)QLbVxweea@w- zp#+Pe0lX3~x9OG4!DKlB#j$SN^XHx{#apX^52tc#A$Yprd8cu|em{hC`WtX^#<<1O zpv@4vdjh)GZ3yi=i7oIdCoyOeZ*ZR%>Zqt6b%ShgJEL*$kmB zD_B4RH9dvnpp6q~$SF0kSWX1z)V-DyQIjmE)##EFBmVRgTju0M(QU_8Z7w@DxyO2} z5mMi7bRzXVgHB8V1kcN zB5{}_lf-UbjqgA2R?~9`XVYmHCe&k#bo~-O{^WEP$>&K)6n`Gok`pQDESesT23Rm% zoo|KLn*0tMLFp`Pm;5%AGP!Qi(ZNvyt*(F2;zuG)&@Oh@fqS!tUIAAANDK50#y1yr zmBuNQ#dLH?S#S=h;!{MnQjd()-#sy1-5{uk_}NWE3461)H{<_aXK(g5))I7~6Y469 zQfSu&*yOclLL9jZ;WLJA(a(57?XKz0gkJBP!&Kcvv}b7~_SjN_&S2>zYd{OS`?R7qiio~ei3}rO@-_xO}~g$A=_?C z2QS=u(Uhc6eK1}l=M9WfM+gVi`(j=|rz{WNc-0i#VpnYht-tg}MoGGh83|nsk!zyq zR|#CRbjuLN;h@?1<Y!Wgo6;zJ}UGu;|H3ytOTh==P7;ITIgdD+*2#S7EGW@{*48 z4QWU($IwpDY`*UyvI}lZzMQtXQx2b+!qzo=OxLlLSEyHt*J$#&hWJ#cS7K0Pp9%;% z;X&nbt;1j7LfUnZEN*=WSGIgaSFfvMl|d7!?+vhH_(aOMp@#p}&nuSglB;UwGViEL zCj&}5)7YD8P&YffkDz>P_ZBXgGre=#?5}6yoegbL!)5WG`=!objdym7O}f^IeQ(N@ zEt~PqCi=;p+h4X1`^fDBSQ>WDtEzl_z$^7kwZmliNv-O=6W*Dv)s=nEd$fL@zbXgs zoYVGG+DCCt1KV9bLoI$%n>o#k6+iE!2kUdjjI*b_pVS~_h&xsLr<&<81Rr2$+9osz z%Qd8zf9Z8h)%x(asO%m8RGXD5*Kc5aOls<|xWJT{egm?f{Gz&-Qj?RClVeh{J?^Oc z2UGbkjjq+SU^XCaPzFP#`N#H4P4gd+l#tvnC8jq*Rpcqs%&o@SwDB{eN==p;J*ZWr z(T874)2Jw801b*XdeV%gMz0F;n>~U4f$~3kSj|{N)cmoV(U)4iQoRZgIa6?gv065& zI~lUSj52Nv!F~vTPndd7HdZS)C?;u0YEq(q+KA+sR7#(0tnHl8FS&nGy8obf|I}g0 z$w?_`F#~DQWMj`d15#55B*iDCfauhi6usu~G(aZwOG}AMACwX|&_6D5U`+O!DMn;@ z*Qb+Z9I8{|bhI5x4?~UB>DYXuAFZ5j>_S7Uqkpb5jICVtTIuLg0g7~*RTsTlJi{1K z3JE~e&)4WpPBV=zlvc**Rrz&VP_gh2w8__@CN;ZYbfA`GY)MNN7|oQnz*vhWkkO?S zwjAh24F_)lvGJ_2Ox1#(0#ix-Z{EbAh5*05z}UaK-gk{_Om$%{`t!^ogqD)Ahaouo zDH-uG-)4)9(-p7Om^A<4{o;qk3`iOnlMt7Zl9Upg(k~$<#Xlh_EiNfB`|+p7)&?3I z?@(pUk)_6}6lB2gJI*p1sY{|mMOrr#9L&l!s@W%Z8i$rH8<*-Ilb#lnIIv%Tx{+b5 zOvmP+x6OTxrL+6*GbTBMaY5N<&Kk$q)8MTTpNHom2@#i!qvvWLIX{))5N`jsC